SQL: вставить поле, которое уже существует - PullRequest
2 голосов
/ 23 февраля 2011

У меня есть таблица с уникальным полем (URL). Что было бы лучше при попытке вставить URL в таблицу:

  • проверьте, существует ли он с помощью кода и не вставляйте, если это не

  • просто вставьте и не возражайте ошибка, которую он создает, если URL уже там

  • вставить игнорировать

Ответы [ 5 ]

4 голосов
/ 23 февраля 2011

Попробуйте это ....

MySQL имеет специальную конструкцию для этого. Предположим, что столбец «FirstName» ниже УНИКАЛЬНЫЙ:

INSERT INTO users (FirstName, RollNumber) VALUES ('Hiu', '12')
ON DUPLICATE KEY UPDATE RollNumber= '12'

Оператор «ON DUPLICATE KEY» работает только для столбцов PRIMARY KEY и UNIQUE.

2 голосов
/ 23 февраля 2011

Игнорировать ошибку при неудачной вставке. Выбор бесполезен, одновременно пользователи могут вставить новое значение через одну микросекунду, и результат вашего выбора бесполезен.

2 голосов
/ 23 февраля 2011
INSERT INTO `table` (`url`) VALUES ('http://example.com') ON DUPLICATE KEY UPDATE `url`='http://example.com'

http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

0 голосов
/ 23 февраля 2011

Может быть, использование REPLACE поможет вам справиться с этим: http://dev.mysql.com/doc/refman/5.0/en/replace.html?

0 голосов
/ 23 февраля 2011

ЕСЛИ вам нужен идентификатор строки для использования в качестве внешнего ключа в другом месте ...

INSERT INTO
    `table`
    (`url`)
VALUES
    ('http://example.com')
ON DUPLICATE KEY UPDATE
    `id` = `id`

или

INSERT INTO
    `table`
    (`url`)
VALUES
    ('http://example.com')
ON DUPLICATE KEY UPDATE
    `id` = `id` = LAST_INSERT_ID(`id`)

либо работает - не уверен, что рекомендуется - вероятно,последний.

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