|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть скрипт который выполняет запись ссылок в базу данных. База выглядит так. Код: sql 1. 2. 3. 4. 5. 6.
У меня есть массив с ссылками которые нужно записать в эту базу. Но поле dn_id определяет форму. А разных форм могут быть одинаковые ссылки. То есть нельзя допустить что бы было две записи где поле dn_id = 1 и link = 'sql.ru' на php это реализовано так. Код: php 1. 2. 3. 4.
По сути производится два запроса. Первый делает выборку. И затем уже php проверяет есть такая запись или нет. И если нет то делает INSERT А вот суть самого вопроса. Из этого действия я хочу выкинуть проверку на php Но уже третий день не могу найти решения. Как выглядит sql запрос который перед тем как произвести INSERT проверяет существует ли такая запись, причем проверяет по полям которые не есть уникальным ключем. Подскажите как это можно сделать, за ранние спасибо. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 01:57 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
INSERT IGNORE INTO <далее по тексту запроса> + необходим составной уникальный индекс по двум указанным полям. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 02:16 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
vkleINSERT IGNORE INTO <далее по тексту запроса> + необходим составной уникальный индекс по двум указанным полям. не совсем понимаю как это мне поможет. Ведь в таком случаи у меня будет куча дублей. Мне нужно составить запрос который заменял бы вот эти два. Код: plsql 1. 2.
И учитывая то что в таблице есть id уникальный ключ, автоинкримент. В такмо случаи получится 3 поля первичный ключ. 1. id авто инкремент. 2. dn_id 3. link А значит INSERT IGNOR INTO будет всегда добавлять новые записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 05:01 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
Rassol2Ведь в таком случаи у меня будет куча дублей. Вы зря прочитали только начало. Вторая строка ответа критически важна. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 07:16 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
Код: sql 1.
зы: индексировать ссылки это дичь ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 12:23 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
а вообще в мускуле есть возможность повесить AUTO_INCREMENT на одно поле, в зависимости от другого Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 12:24 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
vkleINSERT IGNORE INTO <далее по тексту запроса> + необходим составной уникальный индекс по двум указанным полям. Можете расписать мне, потому что я что то не пойму как должно быть. Для проверки создал тестовую базу данных. авторCREATE TABLE `oc_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) NOT NULL, `b` int(11) NOT NULL, PRIMARY KEY (`id`,`a`,`b`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 И начал тестировать запросом на вставку INSERT IGNORE INTO oc_test SET a=1, b=2 ; INSERT IGNORE INTO oc_test SET a=1, b=2 ; В итоге я спокойно дублирую строки . http://i.imgur.com/Okvdyhk.png Как это должно работать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 13:58 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
полудуха вообще в мускуле есть возможность повесить AUTO_INCREMENT на одно поле, в зависимости от другого Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
А их нужно будет удалять :( ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 13:59 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
Rassol2В итоге я спокойно дублирую строкиА то, что у них разные ID - ты в упор не видишь? Код: sql 1.
И вот оно, счастье-то... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 14:40 |
|
INSER c предварительной проверкой.
|
|||
---|---|---|---|
#18+
AkinaRassol2В итоге я спокойно дублирую строкиА то, что у них разные ID - ты в упор не видишь? Код: sql 1.
И вот оно, счастье-то... Большое спасибо. Теперь работает. Я не то что бы не видел, я не понимал что вы имеете в виду. Я и про UNIQUE ничего не знал. Только начинаю осваивать. SQl владею очень на поверхностном уровне. И не мог составить правильный вопрос в гугл, по этому и обратился за помощью. Еше раз спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 19:35 |
|
|
start [/forum/topic.php?fid=47&msg=39833319&tid=1829065]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 162ms |
0 / 0 |