SQL 删除有约束的行

SQL Delete Rows with Constraints

我正在做一些练习,为此我想删除一个用 Primary/Foreign 键引用的行。

是否可以删除那些行而不删除与其有关系的行? (如删除级联)

我也知道我可以禁用约束,但是我想尝试在不禁用约束的情况下删除。

一行总是可以被删除,除非它的主键被引用为另一行中的外键table。在这种情况下,当遇到针对数据的 primary/foreign 键关系时,尝试删除行将导致错误。 ON DELETE CASCADE 选项可用于解决此问题,并在从父项 table.

中删除行时从子项 table 中删除记录

如果您只想删除没有关系的行,那么您可以排除确实有关系的行使用 NOT EXISTS:

删除操作的关系
DELETE FROM table1 a
WHERE NOT EXISTS (
   SELECT FROM table2 b
   WHERE b.table1Id = a.id
)