上下文:PostgreSQL数据库,其中包含列steps
,列subtype
和type
(整数)
需要:如果新记录插入上的列subtype
值不等于'4',则将列type
设置为NULL。
这样做的好方法?约束?触发?
由于
答案 0 :(得分:1)
首先要做的是添加一个约束:
CHECK (type = 4 OR subtype IS NULL) -- if type is 4, sub type may or may not be null
-- if type is not 4, sub type must be null
然后,如果你需要,你可以写一个简单的触发器来设置它,但一般来说,你最好在必要时提出应用程序错误而不是使用触发器,因为应用程序被通知它将获得的不是它保存的是通常是一件好事。