当前位置:  开发笔记 > 数据库 > 正文

条件SQLite检查约束?

如何解决《条件SQLite检查约束?》经验,为你挑选了1个好方法。

我有一个由以下SQL定义的表:

CREATE TABLE test (
  id       integer PRIMARY KEY NOT NULL UNIQUE,
  status   text NOT NULL,
  enddate  date,
  /* Checks */
  CHECK (status IN ("Current", "Complete"))
);

我想补充一点,需要约束enddate为非空status是"完成".

这可能吗?我使用的是SQLite v3.6.16.



1> Andomar..:

怎么样:

CHECK (status = "Current" or (status = "Complete" and enddate is not null))


当约束变得非常复杂时,该方法通常是在表的前面放置一个层来强制执行它.像存储过程层或数据访问库一样.
谢谢,这很有效.这是唯一的方法吗?将来我可能会有更多的状态,支票可能会变得非常大.
好吧,SQLite当前不支持存储的proc,因此要实现它的唯一方法是具有触发器或从UI层实现逻辑。
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有