使用 ON DELETE CASCADE 选项

使用 ON DELETE CASCADE 选项来指定从父表中删除某行时,是否需要从子表中删除相应的行。如果您不指定级联删除,则数据库服务器的缺省行为将阻止您删除表中的数据(如果有其它表引用它)。

如果指定此选项,则稍后当您删除父表中的行时,数据库服务器还删除任何与子表中的行(外键)相关的行。级联删除功能最主要的好处是,需要执行删除操作时它可以减少 SQL 语句的数量。

例如,all_candy 表中包含的 candy_num 列是主键。hard_candy 表将 candy_num 列作为外键引用。以下的 CREATE TABLE 语句将创建 hard_candy 表,其外键上具有级联删除选项:
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 表中的相应行也将被删除。有关从具有级联删除的表中删除行时的语法限制和锁定影响的信息,请参阅级联删除表时的注意事项