有NULLIF()功能:
SELECT NULLIF(var, '');
如果var保持$ 2中的值,则NULL取而代之。
在这个例子中我替换空字符串:’‘有NULL。
有该类型的整数无空字符串。只是不可能。由于NULLIF()无法切换数据类型,因此必须清理PHP中的输入。
如果您没有定义默认列,则也可以在命令中省略该列,INSERT并将其填充为NULL(这是默认值DEFAULT)。
检查PHP中的参数是否为空,如果没有,则不要在INSERT命令中包括该列。
或者使用PHP文字NULL代替,如Quassnoi在此处演示的那样。
其余的仅对字符串类型有意义
为了绝对确定,没有人可以输入空字符串CHECK向表中添加约束:
ALTER TABLE tr_viewADD ConSTRAINT tr_view_age_not_empty CHECK (age <> '');
为了避免由此引起的异常,您可以添加一个自动修复输入的触发器:
CREATE OR REPLACE FUNCTION trg_tr_view_avoid_empty() RETURNS trigger AS$func$BEGIN IF NEW.age = '' THEN NEW.age := NULL; END IF; IF NEW.month = '' THEN NEW.month := NULL; END IF; RETURN NEW;END$func$ LANGUAGE plpgsqlCREATE TRIGGER tr_view_avoid_emptyBEFORE INSERT OR UPDATE ON tr_viewFOR EACH ROWWHEN (NEW.age = '' OR NEW.month = '')EXECUTE PROCEDURE trg_tr_view_avoid_empty();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)