使用主键删除 table 中的行,并使用外键删除不同 table 中的相关行

Deleting row in table with primary key and related rows in different table with foreign key

我有一个 Web 应用程序,它连接到具有多个 table 的数据库。

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

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

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

The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.People_dbo.EventsTable_EventId". The conflict occurred in database "PlannerDatabase", table "dbo.People", column 'EventId'.

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

有没有什么方法可以用尽可能少的 SQL 代码从 EventsTable 中删除 "John's Party" 以及其余 table 中与该派对相关的所有行?

我正在使用 SQL Server Management Studio 2012。

这可以通过在 table.

中添加一个 On Delete Cascade 触发器来完成,而无需代码本身

您可以通过执行来查看对您的 table 的所有引用 EXEC sp_fkeys 'EventsTable'

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

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

ALTER TABLE dbo.People ADD CONSTRAINT FK_T1_T2_Cascade FOREIGN KEY (EventId) REFERENCES dbo.EventsTable(EventId) ON DELETE CASCADE