如果主记录在Firebird数据库中有子记录,我如何限制删除主记录。
答案 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_id
中null
值parent
以外的on update
值添加记录。您可以使用on delete
和on 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以获取详细信息。