SQL Serveur et "on delete cascade"

SQL Serveur et "on delete cascade" - SQL/NoSQL - Programmation

Marsh Posté le 15-06-2006 à 11:52:12    

Bonjour,
   Je suis en train de m'occuper d'une petite base de données, et j'ai un petit problème d'effacement en cascade.
 
En fait j'ai deux tables ("Report" et "Item" ) que j'ai créées comme ça :
 

Code :
  1. CREATE TABLE Report (
  2.   ID          INT IDENTITY (1,1),
  3.   RVersion    VARCHAR(255),
  4.   RHost       VARCHAR(255),
  5.   RUser       VARCHAR(255),
  6.   RLocation   VARCHAR(255),
  7.   RDateTime   VARCHAR(16),
  8.   RComplete   BIT NOT NULL,
  9.   CONSTRAINT  cnstR1 PRIMARY KEY(ID)
  10. );
  11. CREATE TABLE Item (
  12.   ID          INT IDENTITY (1,1),
  13.   IPage       VARCHAR(100),
  14.   IDevice     VARCHAR(255),
  15.   IGroup      VARCHAR(255),
  16.   IField      VARCHAR(255),
  17.   IValue      VARCHAR(255),
  18.   IIcon       INT,
  19.   IID         INT,
  20.   ReportID    INT NOT NULL,
  21.   CONSTRAINT  cnstI1 PRIMARY KEY(ID),
  22.   CONSTRAINT  cnstI2 FOREIGN KEY(ReportID) REFERENCES Report(ID)
  23. );


 
 
Ensuite j'ai voulu faire en sorte que lorsqu'on supprime un enregistrement de la table "Item", l'enregistrement correspondant de la table "Report" soit supprimé aussi. J'ai donc fait :
 

Code :
  1. ALTER TABLE [dbo].[Item]
  2. ADD CONSTRAINT [cnstI2] FOREIGN KEY ([ReportID])
  3.   REFERENCES [dbo].[Report] ([ID])
  4.   ON UPDATE CASCADE
  5.   ON DELETE CASCADE
  6. GO


 
Mais ça ne fonctionne pas, si je fait "delete from Item where ReportID=311;" , l'enregistrement de la table Report avec l'ID 311 n'est pas effacé.
 
Alors d'où le problème peut-il venir ? Ca ne fonctionne pas comme ça le "on delete cascade" ? J'ai fait une erreur de requète ? Où j'ai mal compris le principe ?
 
Merci d'avance :jap:

Reply

Marsh Posté le 15-06-2006 à 11:52:12   

Reply

Marsh Posté le 15-06-2006 à 14:06:50    

Une petite idée ? Un conseil ? Ca m'aiderait vraiment  :sweat: .

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed