Drop de Clé Étrangère sans connaître le nom de la contrainte?
J'ai créé une table à l'aide de commande ci-dessous:
create table Table1(
Id int Not Null
Foreign key
references Table2(Id)
on delete cascade
on update cascade,
UserName nvarchar(150),
TimeInSeconds int Not Null
primary key(Id,TimeInSeconds)
);
Mais maintenant, je veux drop foreign key.
Comme je n'ai pas donné de nom de contrainte je ne peux utiliser:
Alter table <tablename>
drop foreign key <foreign key name>
Est-il de toute façon? Svp aider.
OriginalL'auteur Wondering | 2009-05-05
Vous devez vous connecter pour publier un commentaire.
Vous pouvez trouver le nom de la contrainte dans
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
À l'exception de ce qui se passe si vous faites cela dans un script à la libération de plusieurs bases de données qui doivent avoir le même schéma où le nom de la contrainte peut être différent sur chaque instance de la base de données? Dans ce cas, cela ne fonctionnera pas.
idéalement, vous auriez nommé contraintes, mais si vous n'en avez pas, vous pouvez toujours obtenir les noms à l'exécution du script. Ne voyez pas un problème.
Avons-nous une réponse à Pierre de la question? Je suis en train de faire quelque chose comme ceci: ALTER TABLE ef_jobpremium DROP CONSTRAINT <DynamicWayToRetrieveConstraintName>. Espère que je suis claire, je suis en train de le faire en une seule exécution.
Cela donne le nom de la contrainte. Comment obtenir le nom de la contrainte pour le domaine spécifique ?
OriginalL'auteur Ed Guiness
Similaires pour Ed Réponse, mais vous pouvez l'utiliser pour sélectionner le nom de la clé sur la table et de la colonne nom.
De cette façon, vous pouvez exécuter dans un script ou peut-être comme une sous-requête pour supprimer la contrainte.
OriginalL'auteur Lightbulb1
Expansion sur les réponses depuis que j'ai couru dans certains pièges. Aussi, j'ai eu 2 clés étrangères a déclaré, j'ai donc ajouté une option de clé pour garder, si elle est null il va tout simplement être ignorés:
merci, pour le mettre à jour
Plus un pour répondre à la question dans sa globalité. Tout le monde a raté la partie de la baisse de SQL Server n'autorise pas à paramétrer.
OriginalL'auteur SumGuy
Une option SQL Server:
SQL sélectionne toutes les contraintes pour la table qui vous préoccupent dans un curseur et des gouttes d'eux un par un. Tout ce que vous devez savoir sont les noms de vos tables, vous voulez chuté de.
OriginalL'auteur user1786981
Si vous il suffit de regarder le tableau dans enterprise manager /gestion de l'atelier, vous serez en mesure de voir la liste de clés et de supprimer à partir de là.
OriginalL'auteur Robin Day
vous pouvez mettre:
> show create table nom de la table;
vous verrez comment a été créée la table...les colonnes, les types...etc. et vous avez pu voir votre nom de contrainte.
SHOW CREATE TABLE tablename;
est une base de données MySQL commande spécifique. Cette question est à propos de Microsoft SQL Sever, produit complètement différent.OriginalL'auteur suely