我正在使用 sqlite3。我希望能够做出一个约束,以确保日期范围不与现有日期范围重叠。如果它们确实重叠,只要 foobarId 不一样就可以了。我的问题是如何在下面给出的示例代码中指定上下文(我已经使用前缀query.
来尝试显示上下文)?我什至不确定这是否有效,我猜这在我的 python 代码而不是我的 sql 代码中更合适,但我想知道它是否可能。
示例代码
cursor.execute("""CREATE TABLE foobar (
foobarId INT,
dateFrom DATE,
dateTo DATE,
CONSTRAINT valid CHECK ((SELECT * FROM foobar WHERE (query.dateFrom < dateFrom < query.dateTo OR query.dateFrom < dateTo < query.dateTo) AND foobarId = query.foobarId) IS NULL)
)""")
示例数据
foobarid dateFrom dateTo
1 2013.03.01 2013.03.04
1 2013.03.04 2013.03.06
2 2013.03.05 2013.03.07
3 2013.03.03 2013.03.05
1 2013.03.05 2013.03.07 Invalid
任何帮助将非常感激。谢谢。