Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Уникальность по нескольким полям если одно из полей имеет определённое значение
|
|||
|---|---|---|---|
|
#18+
Нужно реализовать такое ограничение на вставку, триггером или как-то ещё, чтобы записи были уникальны по полям department_id, employee_id, employee_type, но только в случае если employee_type = 'manager'. То есть, некий синтез констрейнтов UNIQUE и CHECK, где UNIQUE проверялся бы только при выполнении условия в CHECK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 14:49 |
|
||
|
Уникальность по нескольким полям если одно из полей имеет определённое значение
|
|||
|---|---|---|---|
|
#18+
Триггер с проверкой, при невыполнении условия - SIGNAL SQLSTATE '23000', MYSQL_ERRNO = 10625 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 15:02 |
|
||
|
Уникальность по нескольким полям если одно из полей имеет определённое значение
|
|||
|---|---|---|---|
|
#18+
Блин, 1062 конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 15:02 |
|
||
|
Уникальность по нескольким полям если одно из полей имеет определённое значение
|
|||
|---|---|---|---|
|
#18+
Что делаю не так? Пробую два варианта. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Ответ: авторSQL запрос: CREATE TRIGGER `before_insert_department_employee` BEFORE INSERT ON `department_employee` BEGIN IF new.employee_type = 'manager' AND EXISTS (SELECT 'x' INTO count_managers FROM `department_employee` WHERE `department_id` = new.department_id AND `employee_id` = new.employee_id AND `employee_type` = new.employee_type) THEN SIGNAL SQLSTATE '23000' SET MESSAGE_TEXT = 'Trying to add duplicate manager' Ответ MySQL: Документация #1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около 'BEGIN IF new.employee_type = 'manager' AND EXISTS (SELECT 'x' INTO count_co' на строке 3 Второй вариант. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. авторSQL запрос: CREATE TRIGGER `before_insert_department_employee` BEFORE INSERT ON `department_employee` BEGIN DECLARE count_managers int default 0 Ответ MySQL: Документация #1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около 'BEGIN DECLARE count_managers int default 0' на строке 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 13:37 |
|
||
|
Уникальность по нескольким полям если одно из полей имеет определённое значение
|
|||
|---|---|---|---|
|
#18+
RTFM DELIMITER ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 13:54 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39629122&tid=1829914]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 357ms |

| 0 / 0 |
