私はsqlite3を使用しています。日付範囲が既存の日付範囲と重ならないように制約を作成できるようにしたいと思います。それらが重複している場合は、foobarIdが同じでない限り問題ありません。私の問題は、以下に示すサンプルコードでコンテキストをどのように指定するかです(query.
コンテキストを表示するためにプレフィックスを使用しました)。これがまったく有効かどうかさえわかりません。これは、SQLコードよりもPythonコードの方が適切だと思いますが、それでも可能かどうかを知りたいと思いました。
サンプルコード
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
どんな助けでも本当にありがたいです。ありがとう。