Как использовать операторы проверки, чтобы новые строки в таблице проверялись по столбцу в другой таблице - PullRequest
0 голосов
/ 07 мая 2020

У меня был ограниченный успех с использованием внешнего ключа. У меня есть таблица цветов и таблица автомобилей, таблица цветов является постоянной, а таблица автомобилей - это то место, где клиенты будут добавлять новые строки. Я хочу убедиться, что новые записи столбца «Цвет» в таблице автомобилей проверяются по таблице цветов, чтобы в таблицу автомобилей нельзя было добавлять новые цвета. SQL должен выдавать ошибку, если запись цвета в таблице автомобилей не совпадает с данными столбца набора цветов в таблице цветов.

Кроме того, как я могу заставить его работать с помощью оператора BULK INSERT

1 Ответ

1 голос
/ 07 мая 2020

Внешний ключ сделает именно это. Пример [очень] simpleisti c может go быть таким:

create table color (
  name varchar(50) primary key not null
);

create table car (
  id primary key not null,
  color_name varchar(50) not null,
  constraint fk1 foreign key (color_name) references color (name)
);

Затем вы можете вставить данные:

insert into color (name) values ('orange');
insert into color (name) values ('yellow');
insert into color (name) values ('magenta');

insert into car (id, color_name) values (10, 'orange'); -- succeeds
insert into car (id, color_name) values (11, 'magenta'); -- succeeds
insert into car (id, color_name) values (12, 'purple'); -- fails!

Как и ожидалось, последняя вставка завершится ошибкой, поскольку пурпурного цвета нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...