我构建了一个包含许多表的大型数据库。之后,我原谅添加“删除级联”。如何在我想要的特定列上添加“在casade上删除”?
例如:
create table Users
(
ID char(9) primary key check (ID like replicate('[0-9]',9)),
firstName nvarchar(20) not null,
)
并且
create table Applications
(
name nvarchar(20) primary key,
establishDate date not null
)
如何更改此表注册到,以便在删除应用或用户时删除具有此值的行?
create table RegisteredTo
(
userID char(9) references Users(ID),
ApplicationName nvarchar(20) references Applications(name),
primary key(userID, ApplicationName)
)
我尝试过类似的东西 - 但是我遇到了错误。
alter table RegisteredTo
ALTER COLUMN applicationName references Applications(name) ON DELETE CASCADE
nvarchar(20)
答案 0 :(得分:0)
您需要添加FOREIGN CONSTRAINT
和ON DELETE CASCADE
:
ALTER TABLE RegisteredTo
ADD CONSTRAINT FK_RegisteredTo_Users FOREIGN KEY (userID) REFERENCES Users(ID) ON DELETE CASCADE;
ALTER TABLE RegisteredTo
ADD CONSTRAINT FK_RegisteredTo_Applications FOREIGN KEY (ApplicationName) REFERENCES Applications(name) ON DELETE CASCADE;