今天有开发组的同事咨询数据库是否有方法可以限制一个表中的多个字段不能同时为空,起始想到的是创建 trigger 的方法,但 trigger 比较费性能,不建议使用,后来想到可以通过创建约束轻松实现,如下:
创建测试表
1 |
[pg93@redhatB pg_root]$ psql francs francs |
创建约束
1 |
francs=> alter table test_con add constraint con_1 check (col_a is not null or col_b is not null or col_c is not null); |
备注:三个字段不能同时为空。
插入测试数据
插入测试数据验证约束,如下:
1 |
francs=> insert into test_con (col_a,col_b,col_c) values ('a','a','a'); |
备注:创建约束能轻松满足需求,当然也可以创建触发器实现此功能,这里不演示了。
参考
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/237995.html