我有一個名爲table1的表,其中有column1(pk)和column2。將mysql中的值從column1複製到column2
在sql中插入table1時,是否可以檢查column2的值和如果column2的值爲null,則將column1的值插入到列2中?
如果是的話我該怎麼做?
我有一個名爲table1的表,其中有column1(pk)和column2。將mysql中的值從column1複製到column2
在sql中插入table1時,是否可以檢查column2的值和如果column2的值爲null,則將column1的值插入到列2中?
如果是的話我該怎麼做?
是,使用IF
statment:
UPDATE table1
SET column2 = IF(column1 IS NOT NULL, column1, 'Something else')
你的檢查是哪裏column2爲空? – Edward
如果你不想讓你的SQL語句中的任何改變,你可以在table1
有條件地分配一個值來COLUMN2定義BEFORE INSERT
觸發。觸發器的主體將包含這樣的模式:
IF NEW.column2 IS NULL THEN
SET NEW.column2 = NEW.column1;
END IF;
(注:中NEW.column1
值是在聲明中提供的值,或NULL,如果它被省略也就是說,如果column1
值是通過auto_increment
分配,即分配的值是在BEFORE INSERT
觸發可不,所以它不能被複制到column2
。)
否則,你就需要修改INSERT
語句本身,要使用美聯社propriate表達以提供值爲column2
,例如,
IFNULL(:col2val,:col1val)
您可能想爲此做一個BEFORE INSERT觸發器。
語法:http://www.techonthenet.com/oracle/triggers/before_insert.php
文檔:http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html
我沒有在這裏得到的問題。如果你在表中創建一個'INSERT',那麼就不會有現有的值。這是除非你正在嘗試'插入...在重複密鑰更新...' –