SQL Server: Comment ajouter une contrainte à une table existante mais seulement si la contrainte n'existe pas déjà?
J'ai besoin d'ajouter une contrainte à une table SQL server, mais seulement si il n'existe pas déjà.
Je suis de la création de la contrainte à l'aide de l'instruction SQL suivante.
ALTER TABLE [Foo] ADD CONSTRAINT [FK_Foo_Bar] FOREIGN KEY ([BarId]) REFERENCES [Bar] ([BarId]) ON UPDATE CASCADE ON DELETE CASCADE
J'espère que je peux ajouter un peu de SQL pour le début de la SQL pour tester l'existence de la contrainte, mais je n'ai aucune idée de comment.
source d'informationauteur jmatthias
Vous devez vous connecter pour publier un commentaire.
Personnellement, je laisserais tomber la contrainte existante, et de le recréer en cas de celui qui est déjà là, est d'une certaine façon différentes
L'actuel, plus moderne, le code que j'utilise est:
ne sais pas si c'est tout l'avantage de la vérification de sys.les objets ... ou sys.foreign_keys ... mais à un certain moment, j'ai décidé sur sys.foreign_keys
Je vous recommande d'utiliser le INFORMATION_SCHEMA.TABLE_CONSTRAINTS vue. Il est portable sur les différents moteurs de base de données:
Vérifier si la contrainte qui existe déjà avant de l'ajouter -
Très simple:
SI OBJECT_ID ("Schéma.keyname") EST NULL
MODIFIER Schéma de la TABLE.tablename ADD CONSTRAINT keyname...
Vous pouvez fournir constraintname que vous le voulez sans apostrophe
Chute de la contrainte par défaut et créer votre propre. ALTER table NOM_TABLE drop constraint NOM de la CONTRAINTE
ALLER
ALTER TABLE [dbo].[NOM_TABLE] ADD CONSTRAINT [DF_TABLE_NAME_COLUMN_NAME] POUR [COLUMN_NAME]