|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : octobre 2006 Messages : 221 ![]() |
J'ai une table avec colonnes A (not null) et B (null). Je veux créér unique contraint qui permets:
A (not null) B (null) ---------- 1 null 1 null 1 5 1 6 2 null 2 1 2 5 mais pas ceci: A (not null) B (null) ---------- 2 1 2 1 Vous connaissez meilleur solution que: create unique index <nomdeindex> on <table> computed by (A ||'x'|| coalesce (B, '__'|| <colonne PK> ||'__')); DAB |
|
|
00
|
|
|
#2 | |
|
Membre régulier
![]() Inscription : février 2005 Messages : 100 ![]() |
Selon ton exemple c'est impossible car la contrainte d'unicité va retourner une erreur pour
Citation:
1 null 1 5 1 6 2 null 2 1 2 5 Sinon tu n'as pas le choix A not null et ALTER TABLE <table> ADD CONSTRAINT <nomdeindex> UNIQUE (A, B) USING INDEX IX_UNIQUE |
|
|
|
00
|
|
|
#3 | |
|
Membre confirmé
![]() Inscription : octobre 2006 Messages : 221 ![]() |
Citation:
Je pourrais aussi utiliser TRIGGER, mais est-ce mieux? Pour être plus precise: TAB1 PK (not null) A (not null) B (null) ---------- 1 1 null 2 1 null 3 1 5 4 1 6 5 2 null 6 2 1 7 2 5 create unique index UIXXX on TAB1 computed by (A ||'x'|| coalesce (B, '__'|| PK ||'__')); insert into TAB1 (PK, A, B) values (8, 1, 5); est alors interdite mais insert into TAB1 (PK, A, B) values (8, 1, null); est OK DAB |
|
|
|
00
|
|
|
#4 | ||
|
Membre régulier
![]() Inscription : février 2005 Messages : 100 ![]() |
Il fallait préciser dès le départ car je ne pouvais pas deviner que ta table contenait trois champs. Dans ton exemple, tu n'avais mis que deux et dans ce cas là, cela n'aurait pas marché.
Citation:
Citation:
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com