mySQL唯一约束

时间:2012-03-15 00:50:26

标签: mysql sql

我有一个包含3列的简单表格。

| prefix | phoneNumber | verifiedDate |
------------------------------------------

verifiedDate可以保留Null

如何在数据库上强制执行此约束?每个UNIQUE prefx&如果VerifiedDate不为NULL,则phoneNumber存在

复制prefx&只有当没有行保存prefx&时才允许使用phoneNumber。 phoneNumber和verifiedDate不是NULL!

2 个答案:

答案 0 :(得分:0)

我知道这样做的唯一方法是使用SQL Triggers

以下是mysql的一些优秀资源:

答案 1 :(得分:0)

一般的想法是编写一个返回“错误数据”的查询,然后在触发器测试中,该查询是空集,例如

之类的东西
DECLARE unique_tally INT;
SET unique_tally = 0;  

SELECT COUNT(*) 
  INTO unique_tally
  FROM (
        SELECT prefix, phoneNumber, COUNT(*) AS tally
          FROM SimpleTable
         WHERE verifiedDate IS NOT NULL
         GROUP 
            BY prefix, phoneNumber
       ) AS DT1
 WHERE tally > 1;

IF ( unique_tally > 0 ) THEN
   -- Fail