2015-06-21 88 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

不管它只是細節 –

相關問題