#php #mysql #insert #duplicates
Вопрос:
Не уверен, что вопрос достаточно ясен, поэтому любые рекомендации приветствуются.
У меня есть следующая таблица:
Table1
----------
ID fk_soc fk_product value
1 365 20 654896
2 365 21 654897
3 365 25 654898
4 820 20 114352
5 820 21 114381
6 820 25 114382
Как вы можете видеть, во втором столбце у меня может быть один и тот же fk_product
номер для другого идентификатора клиента. Но как я могу избежать дублирования записи fk_product
для одного и того же клиента? Т. е. избежать
Table1
----------
ID fk_soc fk_product value
1 365 20 654896
2 365 20 whatever_here
Если я установлю fk_product
как уникальный, я не смогу вставить запись для другого клиента. Записи вставляются с помощью обычной SQL-вставки В HTML-форму и поступают из нее:
INSERT INTO Table1 (fk_soc, fk_distributor_product_code, fk_product)
VALUES (
' . $this->db->escape($this->fk_line) . ',
' . $this->db->escape($this->value) . ',
' . $this->db->escape($this->fk_product) . '
)
Я пробовал использовать:
INSERT INTO Table1 (fk_soc, fk_distributor_product_code, fk_product)
VALUES (
' . $this->db->escape($this->fk_line) . ',
' . $this->db->escape($this->value) . ',
' . $this->db->escape($this->fk_product) . '
)
WHERE NOT EXISTS (
SELECT ' . $this->db->escape($this->fk_product) . '
FROM table WHERE fk_soc= ' . $this->db->escape($this->fk_soc) . '
но таким образом запись не вставляется
Комментарии:
1. Создайте уникальный составной индекс по этим 2 столбцам.
CREATE UNIQUE INDEX idx ON table1 (fk_soc, fk_product);
2. @Akina, это сработало. Спасибо.