2010-05-12 2 views
0

Nous avons deux installations de DB2.Longueur maximale d'une clé étrangère dans DB2? (SQL0107N)

Lors de la définition d'une clé étrangère avec un nom long, cela fonctionne correctement sur une instance, mais pas sur l'autre (nous obtenons un SQL0107N Name too long - max length is 18).

Qu'est-ce qui cause ce comportement différent? Existe-t-il un paramètre que nous pouvons modifier ou est-il dépendant de la version?

Répondre

4

cela semble être dépendant de la version. selon http://ptgmedia.pearsoncmg.com/images/0672326132/downloads/appd.pdf et http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0001029.htm, les limites pour les noms de contrainte référentielle pour les 7, 8 et 9 de la version db2 sont les suivantes:

v7 8 bytes 
v8 128 bytes 
v9 18 bytes 

ces limites ne peuvent être modifiés. si Adhering to the most restrictive case can help you to design application programs that are easily portable.

+0

Merci pour l'info. Je pensais que nous étions tous les deux sur la v9, mais il semble qu'il vaut mieux être prudent. – Thorsten

0

Jetez un oeil à lien suivant:

http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0001029.html?lang=en

Je vois que le nom de contrainte peut être 128 et nous utilisons la version 9.7 pour LUW. Donc les 18 octets de v9 ne sont pas corrects. Et j'ai été capable de créer une clé étrangère dans la base de données avec une longueur effective de 19 octets pour son nom.

+0

Il est généralement préférable de décrire ou de citer les sections pertinentes et d'afficher le lien comme référence. Cela permet de garder la réponse pertinente même si le lien est brisé plus tard. – cyroxis