I want to create primary key on basis of unqid + isremoved and in which isremoved must be true
en ce qui concerne les valeurs, une clé primaire assure seulement qu'ils sont uniqu e. Lorsqu'une clé primaire est un composite composé de plusieurs colonnes, cela signifie que la clé est une combinaison unique de toutes les colonnes impliquées. Cela signifie que si la clé primaire est à la fois unqid
et isremoved
- Seraient lignes valides dans votre table:
UNQID | ISREMOVED
---------------------------------------------------------------
6F9619FF-8B86-D011-B42D-00C04FC964FF | 1
6F9619FF-8B86-D011-B42D-00C04FC964FF | 0
Votre clé primaire ne devrait pas inclure la colonne isremoved
.
...when I try to make the isremoved
field value set to true/1 in the tblcountry table, I should get an error if I have used it in referenced table tblstate if its' isremoved
field is not true. and if the tabstate the isremoved is true for that primary key than its should not give any error.
Pour ce faire, vous avez besoin d'une référence clé étrangère associant les colonnes unqid
et isremoved
dans le tblcountry
aux colonnes unqid
et isremoved
dans le tableau tblstate
.
ALTER TABLE tblcountry
ADD CONSTRAINT tstate_fk FOREIGN KEY (unqid, isremoved) references tblstate (unqid, isremoved)
Joshua avait la bonne idée, la mauvaise direction.
Mais cela signifie que pour insérer un enregistrement dans tblcountry
, vous doit ont la valeur unqid
déjà tblstate
. Une colonne avec une contrainte de clé étrangère peut être nullable - la valeur étant null ne déclenchera pas la contrainte de clé étrangère - mais vous ne pouvez pas spécifier une partie de la clé étrangère. Soit vous satisfaitez la clé étrangère, soit vous ne le faites pas. Je ne suis pas clair sur ce que vous espériez modéliser - si j'avais une meilleure idée, je fournirais des alternatives.
j'ai exécuté votre solution son fonctionnement bien.quand j'insère des données dans tabcountry son laissez-moi insérer mais quand j'essaie d'insérer dans tabstate son erreur me donner –
toujours obtenir l'erreur: Msg 547, niveau 16, état 0, ligne 1 select * de tblcountry BCB1C75D-B70C-4C6E -8A88-01E4624CBDD2 \t ind F2C50808-9206-47D8-A712-701886244535 \t pak EA58024C-3B1A-4C59-8F56-AA7E8FD4436C \t afganistan insert en valeurs de tblstate (NEWID(), 'ràjasthàn' , 'BCB1C75D-B70C-4C6E-8A88-01E4624CBDD2', 0) L'instruction INSERT était en conflit avec la contrainte FOREIGN KEY "fk". Le conflit s'est produit dans la base de données "usecomp", table "dbo.tblcountry". La déclaration a été terminée. –