使用 ON DELETE CASCADE 选项来指定从父表中删除某行时,是否需要从子表中删除相应的行。如果您不指定级联删除,则数据库服务器的缺省行为将阻止您删除表中的数据(如果有其它表引用它)。
如果指定此选项,则稍后当您删除父表中的行时,数据库服务器还删除任何与子表中的行(外键)相关的行。级联删除功能最主要的好处是,需要执行删除操作时它可以减少 SQL 语句的数量。
CREATE TABLE all_candy (candy_num SERIAL PRIMARY KEY, candy_maker CHAR(25)); CREATE TABLE hard_candy (candy_num INT, candy_flavor CHAR(20), FOREIGN KEY (candy_num) REFERENCES all_candy ON DELETE CASCADE);
由于为子表指定了 ON DELETE CASCADE ,因此当从 all_candy 表中删除某行时,hard_candy 表中的相应行也将被删除。有关从具有级联删除的表中删除行时的语法限制和锁定影响的信息,请参阅级联删除表时的注意事项。