Я хочу, чтобы одна из моих таблиц проверила правильность значений, введенных в одно из ее полей.
В моем случае у меня есть таблица с именем Book и таблица с названием Sale.Поскольку каждая продажа имеет номер книги, для меня должна быть возможность убедиться, что цена, введенная в таблицу продаж, соответствует цене, соответствующей значению isbn в таблице книг.Я убежден, что должен использовать ограничение CHECK в SQL, но я не знаю, как это сделать.
Родительская таблица:
CREATE TABLE Book
(
isbn INTEGER NOT NULL,
title VARCHAR(20),
author VARCHAR(20),
price DOUBLE,
PRIMARY KEY (isbn)
);
Вставка в таблицу Book:
INSERT INTO Book
VALUES (1, 'A Separate Peace', 'John Knowles' 9.99);
Моя дочерняя таблица:
CREATE TABLE Sale
(
date DATE,
saleId INTEGER NOT NULL,
isbn INTEGER,
price DOUBLE,
PRIMARY KEY (saleId),
FOREIGN KEY (isbn) REFERENCES Book (isbn),
CHECK (price = (Book (price) WHERE Book (isbn) = isbn))
);
Пример оператора INSERTДля продажи:
INSERT INTO Sale
VALUES ('2012-01-01', 1234, 1, 8.99);
Обратите внимание, что правильная цена составляет 9,99, а не 8,99.Я хочу, чтобы эта ВСТАВКА возвращала ошибку.