2015-06-21 79 views
0

我正在为我的个人项目开发一个新的MySQL数据库(接口PHPmyadmin),并且我不知道如何避免同一个表上的两列有相同的价值。所以,我希望我们不能在一个记录中插入2个不同列的相同值。SQL - 避免1记录中的2列具有相同的值

TABLE A 

id name firstname 
1 john Marry => will be possible 
2 Marry John => will be possible 
3 John John => won't be possible 
4 test test => won't be possible 

我想,在同一个记录的两列不能有相同的值

+1

定义一个触发器,用于检查要插入/更新的值,如果相同,则取消操作。 –

+0

但是,在Mysql触发器中取消操作是不可能的,因此如果我创建一个新的BEFORE INSERT触发器来检查column2的column1 EQUALS值的WHEN值,它将无法中止操作。 –

+1

当然你可以放弃。 'SIGNAL SQLSTATE'45000' SET MESSAGE_TEXT ='插入中止,因为...';'在你的触发器中 –

回答

0

通常你会使用CHECK约束为。 Bu MySQL目前不支持它们。它接受输入但忽略它们。

但是你可以使用取消这样

delimiter // 
CREATE TRIGGER check_trigger BEFORE INSERT ON your_table 
FOR EACH ROW 
BEGIN   
    IF (NEW.name = NEW.firstname) THEN 
     SIGNAL SQLSTATE '45000' 
      SET MESSAGE_TEXT = 'same names error. Insertion canceled'; 
    END IF; 
END 
// 
delimiter ; 

你也需要做同样的更新触发插入/在一定条件下更新的触发器。

+0

谢谢,它有效,但我真的很惊讶我们必须用“老派”的方式来解决这个问题MySQL中的一个基本问题。我正在使用它来避免在同一张表中使用“autolike”。 –

+1

不知道“autolike”是什么。 –

+0

不管它只是细节 –

相关问题