我正在使用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
任何幫助將非常感激。謝謝。
在表達式'a 2013-03-01 13:00:02
我知道,我只是減少了代碼的數量,因爲這條線變得非常長。 – 2013-03-01 13:53:13