я сделал этот код:PostqreSQL Повторяющиеся значения WHERE NOT EXISTS
INSERT into author(authorfirstname1, authorlastname1,authorfirstname2, authorlastname2)
select '".addslashes($_POST['authorfirstname1'])."','".addslashes($_POST['authorlastname1'])."','".addslashes($_POST['authorfirstname2'])."','".addslashes($_POST['authorlastname2'])."'
from author
where not exists(select authorfirstname1, authorlastname1, authorfirstname2, authorlastname2 from author
where author.authorfirstname1='".addslashes($_POST['authorfirstname1'])."'
and author.authorlastname1='".addslashes($_POST['authorlastname1'])."'
and author.authorfirstname2='".addslashes($_POST['authorfirstname2'])."'
and author.authorlastname2='".addslashes($_POST['authorlastname2'])."'
);
Смысл этого кода должен быть, что он проверяет, является ли значение Allready существует в базе данных, и если он не делает, то он входит в нее. Это аддоны ($ _ POST ['authorlastname2']). «Представляет собой вход, но его можно легко заменить на«% myentereddata% »
Моя проблема в том, что он ничего не делает ... даже не дать сообщение об ошибке, его успех, но он не вводит данные, если данные не существуют в db allready и не уверены, что он прекратит ввод данных, если данные существуют.
Поэтому я был бы признателен, если бы кто-то помог мне решить проблему с этим кодом или дать другой пример, как это сделать по-другому, чтобы он работал.
Мой идентификатор первичный и последовательный, поэтому нет необходимости, чтобы вставить его
INSERT INTO author (authorfirstname1, authorlastname1,authorfirstname2, authorlastname2)
VALUES ('one','two','three','four');
Запрос возвращается успешно: 1 ряд пострадавших, 60 мса время выполнения.
INSERT into author(authorfirstname1, authorlastname1,authorfirstname2, authorlastname2)
select 'one','two','three','four'
from author
where not exists(select authorfirstname1, authorlastname1, authorfirstname2, authorlastname2 from author
where author.authorfirstname1='one'
and author.authorlastname1='two'
and author.authorfirstname2='three'
and author.authorlastname2='four'
);
Запрос успешно возвращен: повреждено 657 строк, время выполнения 40 мс.
INSERT into author(authorfirstname1, authorlastname1,authorfirstname2, authorlastname2)
select 'new','new','new','new'
from author
where not exists(select authorfirstname1, authorlastname1, authorfirstname2, authorlastname2 from author
where author.authorfirstname1='new'
and author.authorlastname1='new'
and author.authorfirstname2='new'
and author.authorlastname2='new'
);
Запрос возвращен успешно: 1314 строк затронуты, время выполнения 70 мс.
ВЫ ХОТИТЕ получить сообщение об ошибке, если попытаетесь вставить строку, которая уже существует? Или вы хотите вставить его, если его нет, и спокойно игнорировать его, если он уже существует? –