用于制作外键的SQL语句

时间:2017-12-11 17:54:45

标签: sql mariadb

ALTER TABLE Chosen_doctor ADD FOREIGN KEY (doctor) 
REFERENCES Doctors (name) WHERE areaofexpertise LIKE `General%`  
ON DELETE RESTRICT ON UPDATE RESTRICT;

这是否合理的sql语句我想添加到mz外键,如果他的专业领域是全科医生,它应该被引用到医生名称

2 个答案:

答案 0 :(得分:0)

FOREIGN KEYs是完整性约束,而不是实现选择的方法。

FK具有创建INDEX的副作用,但这是为了提高性能,而不是为了过滤。

通过在WHERE语句中使用SELECT子句来实现过滤。

此外,DELETEUPDATE的复杂限制必须通过WHERE条款处理。

答案 1 :(得分:0)

在oracle中,您可以创建约束:

ALTER TABLE suppliers
ADD CONSTRAINT check_supplier_name
  CHECK (supplier_name IN ('IBM', 'Microsoft', 'NVIDIA'));

但我没有看到FK的'%like%'。我认为通常rdbms概念不支持FK与'喜欢'。您还可以为您的案例(任务)创建函数,并在插入每行之前在表中的触发器中添加此函数。