如果主记录有子记录,则限制删除主记录

时间:2017-11-15 21:00:35

标签: sql firebird

如果主记录在Firebird数据库中有子记录,我如何限制删除主记录。

1 个答案:

答案 0 :(得分:2)

您需要将子表中的外键添加到父表。如果存在子记录,则外键的默认行为将阻止从父表中删除记录。

例如

create table parent (
    id integer generated by default as identity primary key
);

create table child (
    id integer generated by default as identity primary key,
    parent_id integer references parent(id)
);

这也会阻止您向parent_idnullparent以外的on update值添加记录。您可以使用on deleteon delete cascade子句进一步修改外键约束的行为。请参阅constraints上的Firebird语言参考。例如,如果父记录被删除,使用{ "faqs": [ { "id": 1, "question": "What is Salmon about?", "answer": "Building great sites for our amazing clients. Simple." }, { "id": 3, "question": "What is the location of Salmon Watford?", "answer": "Just 2 minutes walk from Watford Junction Train Station" }, { "id": 5, "question": "Is this the last question?", "answer": "Yes. You have done well!" } ] } 将删除子表中的行。

外键只能指向主键或唯一键。

上述代码有意短,您应该考虑对主键和外键约束使用命名约束,因为它将简化将来的维护,请查看language reference以获取详细信息。