Что-то не так с моим оператором SQL - PullRequest
0 голосов
/ 27 августа 2018

Это говорит мне, что у меня где-то здесь ошибка:

if not exists (select * from ARCUS where CUSTOMER_NO = a) 
begin 
    insert into ARCUS (CUSTOMER_NO) values (a)
end

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Также, как вариант, вы можете что-то вроде:

insert into ARCUS (CUSTOMER_NO) 
select 'a' 
where not exists (select 1 from ARCUS where CUSTOMER_NO = 'a');
0 голосов
/ 27 августа 2018

@ У Бармара хорошее решение, но я не могу +1 ответить ...

Просто добавьте уникальный ключ в "CUSTOMER_NO"

Вы также должны написать свое поле и имя таблицы в нижнем регистре при использовании mysql.

ALTER TABLE `ARCUS` ADD UNIQUE INDEX `UNIQUE_CUSTOMER_NO` (`CUSTOMER_NO`);

А потом сделай

INSERT IGNORE INTO `ARCUS` SET `CUSTOMER_NO` = 'a'
0 голосов
/ 27 августа 2018

Предполагая, что этот код находится внутри хранимой процедуры, вы пропускаете точку с запятой после запроса INSERT.

if not exists (select * from ARCUS where CUSTOMER_NO = a) 
begin 
    insert into ARCUS (CUSTOMER_NO) values (a);
end

Но если CUSTOMER_NO является уникальным ключом в таблице, вы можете сделать это одним запросом:

insert ignore into ARCUS (CUSTOMER_NO) values (a);

Преимущество этого в том, что в процедуре нет необходимости.

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