我有一个名为table1的表,其中包含column1(pk)和column2。
在sql中插入table1时,如果column2的值为null ,是否可以检查column2的值,将column1的值插入columns2?
如果是这样,我该怎么做?
答案 0 :(得分:1)
是的,使用IF
声明:
UPDATE table1
SET column2 = IF(column1 IS NOT NULL, column1, 'Something else')
答案 1 :(得分:1)
你可能想为此做一个BEFORE INSERT触发器。
语法:http://www.techonthenet.com/oracle/triggers/before_insert.php
文档:http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html
答案 2 :(得分:0)
如果您不想对SQL语句进行任何更改,可以在BEFORE INSERT
上定义 table1
触发器,有条件地为column2分配值。触发器的主体将包含这样的模式:
IF NEW.column2 IS NULL THEN
SET NEW.column2 = NEW.column1;
END IF;
(注意:NEW.column1
的值是语句中提供的值,如果省略,则为NULL。也就是说,如果column1
的值由{auto_increment
赋值。 1}},BEFORE INSERT
触发器中指定的值不,因此无法将其复制到column2
。)
否则,您需要修改INSERT
语句本身,使用适当的表达式为column2
提供值,例如
IFNULL(:col2val,:col1val)