Zboss Si tu doutes, reboot... | 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 :
- CREATE TABLE Report (
- ID INT IDENTITY (1,1),
- RVersion VARCHAR(255),
- RHost VARCHAR(255),
- RUser VARCHAR(255),
- RLocation VARCHAR(255),
- RDateTime VARCHAR(16),
- RComplete BIT NOT NULL,
- CONSTRAINT cnstR1 PRIMARY KEY(ID)
- );
- CREATE TABLE Item (
- ID INT IDENTITY (1,1),
- IPage VARCHAR(100),
- IDevice VARCHAR(255),
- IGroup VARCHAR(255),
- IField VARCHAR(255),
- IValue VARCHAR(255),
- IIcon INT,
- IID INT,
- ReportID INT NOT NULL,
- CONSTRAINT cnstI1 PRIMARY KEY(ID),
- CONSTRAINT cnstI2 FOREIGN KEY(ReportID) REFERENCES Report(ID)
- );
|
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 :
- ALTER TABLE [dbo].[Item]
- ADD CONSTRAINT [cnstI2] FOREIGN KEY ([ReportID])
- REFERENCES [dbo].[Report] ([ID])
- ON UPDATE CASCADE
- ON DELETE CASCADE
- 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 |