Mysql 在将复合密钥指定为外键之前,如何对其进行安全检查?
因此,通常情况下,当需要在已填充的表上声明外键时,他们将首先确保该外键表中包含创建外键的表中包含的所有值Mysql 在将复合密钥指定为外键之前,如何对其进行安全检查?,mysql,Mysql,因此,通常情况下,当需要在已填充的表上声明外键时,他们将首先确保该外键表中包含创建外键的表中包含的所有值 select * from myschema.Orders where ProductID not in (select ProductID from myschema.Products); 如果从上述查询中返回任何记录,那么DBA将首先处理这些记录,然后再设置外键。但是如果Products表包含一个复合外键呢?如果Products表同时包含
select * from myschema.Orders
where ProductID not in
(select ProductID from myschema.Products);
如果从上述查询中返回任何记录,那么DBA将首先处理这些记录,然后再设置外键。但是如果Products表包含一个复合外键呢?如果Products表同时包含ProductID字段和BatchNumber字段作为主键,那么如何进行上述检查
这是假设Orders表也有这两个字段。在这种情况下,您可以使用NOT EXISTS
大概是这样的:
select *
from myschema.Orders o
where not exists (
select ProductID
from myschema.Products p
where o.ProductID = p.ProductID
and o.BatchNumber = p.BatchNumber
);