This topic created in 2276 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
 |
|
代码
|
 |
|
可以加,但一般不会给数据库加这种约束,建议应用自己解决
|
 |
|
记得 oracle 还有 postgresql 这样比较偏强约束的 SQL 数据库是可以实现这种字段约束的
但是 MySQL 好像没有,当然也可能我孤陋寡闻了,如果有请人知道请麻烦告知
现代关于数据库更多强调的是事务性,字段约束用的比较少了,约束更多在应用层上实现
|
 |
|
触发器
|
 |
|
update 的时候做 publish_at 的判断
|
 |
|
代码控制
|
 |
|
代码约束。
以下我个人理解,不一定对: 按数据库设计的“规范”来说,这种依赖关系是不符合数据库设计规范的。 可以考虑拆成:draft(草稿)、review(审核)、publish(发布)、article(文章)四个表。
|
 |
|
另外建议, 发布状态 , 和 审核状态分开, 不同含义的状态分离 , 更有利于控制.
|