|
|
|
Вставка уникального значения
|
|||
|---|---|---|---|
|
#18+
Всем привет. Народ, помогите пожалуйста. У меня есть таблица: id | content | gr | flag ---------------------- 43 644 2 1 44 646 2 0 45 242 2 0 46 6464 2 0 47 7575 3 1 48 24242 3 0 49 8996 3 0 50 3469 3 0 id - первичный ключ (автоинкрементный). Мне нужно добавить новое значение в таблицу, интересует поле content. Вновь добавляемое значение должно быть уникальным относительно записей, у которых flag=1. например в данном примере у вновь добавляемой записи не должно быть content=644 или content=7575. Я пишу запрос, используя FIND_IN_SET, но phpMyAdmin почему то ругается. Вот мой запрос: Код: sql 1. 2. Но новая запись в таблицу не добавляется. вот ошибка: автор#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF FIND_IN_SET('644',Select content From add_delete_record Where flag=1)=0 THEN ' at line 1 подскажите пожалуйста, что не так? Где я накосячил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:56:37 |
|
||
|
Вставка уникального значения
|
|||
|---|---|---|---|
|
#18+
fenix_63Вот мой запрос: Код: sql 1. 2. Это не запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:46:06 |
|
||
|
Вставка уникального значения
|
|||
|---|---|---|---|
|
#18+
fenix_63, тут три стратегии, в зависимости от вашей ситуации. стратегия 1. просто должно быть любая уникальная запись тогда добавляете уникальный индекс на поле контент и вставляете как обычно если вставляемая запись окажется уже есть, то вставка просто отменится Код: sql 1. стратегия 2. надо вставлять, если в базе нет и обновлять если есть тогда тоже добавляете уникальный индекс как в первой стратегии, но вставку производите вот так Код: sql 1. 2. стратегия 3. вставка обязана быть всегда, но с гарантией уникальности по полю Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 21:01:27 |
|
||
|
Вставка уникального значения
|
|||
|---|---|---|---|
|
#18+
Спасибо. Стратегию 1 я пробовал. Но индексное поле id менять пока не хочу. Дело в том, что у меня на веб-странице есть кнопка для удаления записи - и там идёт привязка к id, и если id будет не уникальным, может удалиться несколько записей таблицы. Задачу ещё усложняет то, что записи,у которых flag = 0 могут дублироваться. Вообще у меня добавление будет сделано вот как: добавляю content: смотрю сначала в какую группу можно записать, т.е. с каким gr. gr - для обозначения группы. По 4 записи в группу. Если в группе 0 записей, вот тогда надо и сделать запись уникальной, т.к. у неё flag будет равен 1, если в группе уже 1,2 или 3 записи есть, то просто добавляю ещё одну запись в таблицу, уже не заботясь об уникальности. Стратегию 2 не могу применить, т.к. это не нужно. Мне нужно просто добавить уникальное значение. Т.е. сперва проверить, есть ли среди тех записей, у которых flag=1 совпадение с вновь добавляемым значением (content). Если совпадение есть - то ничего не добавляем, и вообще ничего не делаем, а вот если совпадений нет, то успешно добавляем в базу. Ну если не получиться на MySQL это сделать, придётся ещё и php прикрутить в помощь )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 23:31:15 |
|
||
|
Вставка уникального значения
|
|||
|---|---|---|---|
|
#18+
fenix_63Но индексное поле id менять пока не хочу. Дело в том, что у меня на веб-странице есть кнопка для удаления записи - и там идёт привязка к id, и если id будет не уникальным, может удалиться несколько записей таблицы.Вообще-то уникальных индексов у таблицы может быть несколько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 23:58:28 |
|
||
|
Вставка уникального значения
|
|||
|---|---|---|---|
|
#18+
Я имел ввиду ключевое поле. Не профи в базах данных. Помогите пожалуйста с этой задачей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 00:31:21 |
|
||
|
Вставка уникального значения
|
|||
|---|---|---|---|
|
#18+
fenix_63Спасибо. Стратегию 1 я пробовал. Но индексное поле id менять пока не хочу. КМБ по ключам: Для профессионалов не существует понятия индексное поле. Существует только понятие индекс по какому-то полю или поле, по которому задан индекс. Ключ и индекс - это одно и то же. Индексов может быть много. Индекс может быть не только по полю, но и сразу по нескольким полям. Одно и то же поле может входить сразу в несколько индексов. Основное назначение индекса - ускорение запросов. Уникальный ключ - это просто разновидность индекса с доп. функционалом. Первичный ключ - это просто уникальный индекс, применяемый по дефолту. fenix_63Задачу ещё усложняет то, что записи,у которых flag = 0 могут дублироваться. Вообще у меня добавление будет сделано вот как: добавляю content: смотрю сначала в какую группу можно записать, т.е. с каким gr. gr - для обозначения группы. По 4 записи в группу. Если в группе 0 записей, вот тогда надо и сделать запись уникальной, т.к. у неё flag будет равен 1, если в группе уже 1,2 или 3 записи есть, то просто добавляю ещё одну запись в таблицу, уже не заботясь об уникальности. Самое простое и быстрое решение такой задачи вот так: Код: sql 1. 2. 3. 4. fenix_63По 4 записи в группу. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 01:53:21 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39094186&tid=1832544]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 413ms |

| 0 / 0 |
