ALTER TABLE Chosen_doctor ADD FOREIGN KEY (doctor)
REFERENCES Doctors (name) WHERE areaofexpertise LIKE `General%`
ON DELETE RESTRICT ON UPDATE RESTRICT;
这是否合理的sql语句我想添加到mz外键,如果他的专业领域是全科医生,它应该被引用到医生名称
答案 0 :(得分:0)
FOREIGN KEYs
是完整性约束,而不是实现选择的方法。
FK具有创建INDEX
的副作用,但这是为了提高性能,而不是为了过滤。
通过在WHERE
语句中使用SELECT
子句来实现过滤。
此外,DELETE
和UPDATE
的复杂限制必须通过WHERE
条款处理。
答案 1 :(得分:0)
在oracle中,您可以创建约束:
ALTER TABLE suppliers
ADD CONSTRAINT check_supplier_name
CHECK (supplier_name IN ('IBM', 'Microsoft', 'NVIDIA'));
但我没有看到FK的'%like%'。我认为通常rdbms概念不支持FK与'喜欢'。您还可以为您的案例(任务)创建函数,并在插入每行之前在表中的触发器中添加此函数。