使用外键删除不同表中主键和相关行的表中的行

时间:2016-04-21 14:33:26

标签: sql sql-server-2012 delete-row

我有一个连接到具有多个表的数据库的webapp。

出于测试目的,我需要删除表中的一行。我正在使用以下行:

delete from EventsTable where Name = 'John's Party'

但是,运行时我收到以下错误消息:

  

DELETE语句与REFERENCE约束“FK_dbo.People_dbo.EventsTable_EventId”冲突。冲突发生在数据库“PlannerDatabase”,表“dbo.People”,列'EventId'。

我认为这是因为外键与EventsTable中的主键绑定,但我的问题是:

有没有办法,尽可能使用最少量的SQL代码,从EventsTable中删除“John's Party”,并在其余表中删除与该方相关的所有行?

我正在使用SQL Server Management Studio 2012。

1 个答案:

答案 0 :(得分:0)

这可以通过向表中添加"ARTEFACT1"触发器来实现,无需代码本身。

您可以通过执行来查看对表的所有引用 On Delete Cascade

然后你可以像这样创建级联删除:

EXEC sp_fkeys 'EventsTable'

ALTER TABLE dbo.People DROP CONSTRAINT FK_dbo.People_dbo.EventsTable_EventId -- or whatever it's called