0
SQL Anywhere 9.0でいくつかのチェック制約を定式化しようとしています。Sybase Check制約評価
は基本的に私はこのようなスキーマを持っている:私は、テーブルの中で最も数になるように、各制限の制約my_number
を強制しようとしている
CREATE TABLE limits (
id INT IDENTITY PRIMARY KEY,
count INT NOT NULL
);
CREATE TABLE sum (
user INT,
limit INT,
my_number INT NOT NULL CHECK(my_number > 0),
PRIMARY KEY (user, limit)
);
。
私は
CHECK ((SELECT sum(my_number) FROM sum WHERE limit = limit) <= (SELECT count FROM limits WHERE id = limit))
と
CHECK (((SELECT sum(my_number) FROM sum WHERE limit = limit) + my_number) <= (SELECT count FROM limits WHERE id = limit))
を試みたし、彼らの両方が正しい事をしないように見えます。これらのサブクエリはいずれもオフになっています(つまり、負の数値を取得すると、挿入は失敗しますが、その前には無効になります)。
テーブルが挿入された後に一貫性があるかどうかチェックし、無効の場合はロールバックしますか?