web-dev-qa-db-fra.com

Comment éditer une table pour activer CASCADE DELETE?

J'ai un tableau représentant les utilisateurs. Lorsqu'un utilisateur est supprimé, j'obtiens:

L'instruction DELETE est en conflit avec la contrainte REFERENCE

Apparemment, CASCADE DELETE n'est pas aussi simple que je l'imaginais dans SQL Server, et l'option doit être ajoutée à la table.

Le problème est le suivant: je ne sais pas comment ajouter le CASCADE DELETE option.

J'utilise: SQL Server 2008. Des idees pour faire cela?

25
RadiantHex

Lisez d'abord cet article Microsoft. Lisez-moi . J'utilise l'interface graphique lors de la conception, voici donc une image de la façon dont elle est sélectionnée dans SSMS. alt text La syntaxe ajoutée à la clé étrangère est "ON DELETE CASCADE"

28
RC_Cleland

Google ALTER TABLE DROP CONSTRAINT, puis ALTER TABLE ADD CONSTRAINT:

ALTER TABLE

Voici un petit exemple:

CREATE TABLE A 
(
 ID INTEGER NOT NULL UNIQUE
);

CREATE TABLE B 
(
 ID INTEGER NOT NULL UNIQUE
    CONSTRAINT fk__B__A 
       REFERENCES A (ID)
);

-- Oops! Forgot the CASCADE referential actions.
-- DROP the constraint then recreate it:

ALTER TABLE B DROP
   CONSTRAINT fk__B__A;

ALTER TABLE B ADD
   CONSTRAINT fk__B__A
      FOREIGN KEY (ID)
      REFERENCES A (ID)
      ON DELETE CASCADE
      ON UPDATE CASCADE;
17
Mr. TA

Voici la façon dont j'ajouterais la fonctionnalité "suppression en cascade" à une clé étrangère existante dans SQL Server Management Studio.

Tout d'abord, recherchez votre clé étrangère et ouvrez-la "DROP and CREATE To" dans une nouvelle fenêtre de requête.

Drop and Create

Ensuite, ajoutez simplement "ON DELETE CASCADE" à la "ADD CONSTRAINT "commande:

On delete cascade

Ensuite, appuyez simplement sur le bouton "Exécuter" pour exécuter la requête.

Travail accompli !

15
Mike Gledhill