This topic created in 2103 days ago, the information mentioned may be changed or developed.
比如有个表 table_blog
那么,这个表有 2 个字段,一个是 status,比如说‘草稿’,‘已发布’,‘审核中’
那么,要求,如果 status 是‘已发布’的时候,'publish_at' 这个字段必须有值
这可以通过数据库来做约束吗?
还是说,没办法,只能通过代码( ORM,Model 等)来做约束
9 replies • 2020-08-20 12:07:21 +08:00
 |
|
2
weizhen199 Aug 20, 2020
可以加,但一般不会给数据库加这种约束,建议应用自己解决
|
 |
|
3
abcbuzhiming Aug 20, 2020
记得 oracle 还有 postgresql 这样比较偏强约束的 SQL 数据库是可以实现这种字段约束的
但是 MySQL 好像没有,当然也可能我孤陋寡闻了,如果有请人知道请麻烦告知
现代关于数据库更多强调的是事务性,字段约束用的比较少了,约束更多在应用层上实现
|
 |
|
5
rbe Aug 20, 2020
|
 |
|
6
kiracyan Aug 20, 2020
update 的时候做 publish_at 的判断
|
 |
|
8
clf Aug 20, 2020
代码约束。
以下我个人理解,不一定对: 按数据库设计的“规范”来说,这种依赖关系是不符合数据库设计规范的。 可以考虑拆成:draft(草稿)、review(审核)、publish(发布)、article(文章)四个表。
|
 |
|
9
kanepan19 Aug 20, 2020
另外建议, 发布状态 , 和 审核状态分开, 不同含义的状态分离 , 更有利于控制.
|