我有一张桌子,我正在尝试添加一个独特的索引。问题是,脚本设置插入数据的方式,偶尔会有一些空字符串而不是NULL
。
所以,除了更改脚本(我预见有必要,除非有人拯救我!)....是否有任何设置在mysql中自动使用NULL
值空字符串是否传递给唯一键?
答案 0 :(得分:5)
如果您无法修复导入脚本,那么您应该能够在INSERT或UPDATE到达表之前使用触发器进行修补。这样的事情可以解决问题:
delimiter $$
create trigger nullify_blanks_ins before insert on your_table
for each row begin
if new.string = '' then
set new.string = null;
end if;
end;
$$
create trigger nullify_blanks_upd before update on your_table
for each row begin
if new.string = '' then
set new.string = null;
end if;
end;
$$
delimiter ;
new
这里指的是 INSERT或UPDATE完成后行的内容,以便您可以查找垃圾值并修复它们。然后,由于这些是BEFORE触发器,因此修补的行将进入数据库。当然,您必须更改表格(your_table
)和列(string
)名称以适合您的情况。
答案 1 :(得分:0)
尝试类似
的内容SET sn=NULLIF(sn,NULL);
或
UPDATE Table
SET demo = CASE demo = ' ' THEN NULL ELSE demo END,
...