|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.04.2011, 08:44 | #1 | |
любитель-далеко не
Участник клуба
Регистрация: 13.04.2010
Сообщений: 1,156
|
Здравствуйте уважаемые программисты)
Скажите пожалуйста - надо ли ограничивать изменение данных столбца, который указан , как AUTO INCREMENT (чтобы туда нельзя было подставить произвольное значение.) если да - то как создать триггер, который запрещает добавление данных в конкретный столбец ( MySQL) ? по поводу таблицы нашёл такой скрипт - например, есть таблица - Код:
Код:
заранее благодарю) вроде бы mysql не поддерживает прерывание исполнения триггера и народ предлагает такое вот решение - Цитата:
но непонятно - будет ли данный тригер запускаться при автоматическом инкрементировании поля? Последний раз редактировалось Stilet; 29.04.2011 в 13:35. |
|
29.04.2011, 10:27 | #2 | |
Пользователь
Регистрация: 22.03.2011
Сообщений: 23
|
Цитата:
Таблица: Код:
Код:
1. Как видно считает общее количество записей в таблице 2. Присваивает полученное значение переменной @total 3. Затем перехватывает новое поставляемое значение, при этом устанавливает его в @total + 1, то есть на 1 больше, чем предыдущее. Результат выполения триггера: Код:
Код:
На счет запрета вставки в определенный столбец, еще подумаю ))) Кстати приведенный мною пример триггера не много нарушает целостность первичного ключа. То есть если мы в таблицу без моего триггера удалим последнюю запись с user_id = 3, а затем вставим новую запись, то вставиться запись с user_id = 4. А вот в таблице с моим триггером при удалении последней записи с user_id = 3, а затем при вставке новой, вставиться запись с user_id = 3, что противоречит определению первичного ключа ))) Насчет запрета вставки значения в столбец. Мне не совсем понятно для чего Вам это нужно. Имеет ли смысл вообще создавать столбец, куда невозможно будет вставить запись. Нет столбца - нет записи. А вот если запретить обновление существующего значения в определенном столбце, то все просто - надо в теле триггера вписать примерно Код:
"Сильный" программист
Последний раз редактировалось Stilet; 29.04.2011 в 13:35. |
|
29.04.2011, 13:19 | #3 | ||
любитель-далеко не
Участник клуба
Регистрация: 13.04.2010
Сообщений: 1,156
|
Цитата:
я написал такой тригерр (кривой) - но теперь ничего в таблицу вообще добавить нельзя (( - Цитата:
|
||
29.04.2011, 13:37 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Есть в мускуле возможность написания своей процедуры? если да - напиши процедуру вставки, а программист уже пусть юзает не INSERT вчистую, а твою процедуру, которая корректно будет вносить данные.
I'm learning to live...
|
29.04.2011, 14:35 | #5 | |
Пользователь
Регистрация: 22.03.2011
Сообщений: 23
|
Цитата:
Для решения проблемы просто замените триггер примерно на Код:
"Сильный" программист
|
|
17.05.2011, 18:47 | #6 | |
любитель-далеко не
Участник клуба
Регистрация: 13.04.2010
Сообщений: 1,156
|
Цитата:
|
|
17.05.2011, 20:01 | #7 |
любитель-далеко не
Участник клуба
Регистрация: 13.04.2010
Сообщений: 1,156
|
Товарищи , подскажите правильно ли я понимаю, что при попытке самостоятельно в запросе задать userr_id (not null AUTO_INCREMENT) при наличии такого триггера -
Код:
|
18.05.2011, 12:12 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Триггер будет отрабатывать не зависимо от того задано или не задано в запросе значение поля и , поскольку, BEFORE INSERT, то (теоретически) до создания записи. Для полной уверенности на левой таблице нельзя что ли поэксперементировать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Столбец таблицы с 2 типами данных | FroL25 | Общие вопросы C/C++ | 1 | 08.07.2010 16:02 |
Автофильтр + постоянное добавление данных в столбец | Kostya1981 | Microsoft Office Excel | 5 | 28.06.2010 11:57 |
из дбэдита в конкретный столбец Дбгрида? | Милана666 | БД в Delphi | 4 | 25.05.2010 08:10 |
макрос который будет копировать столбец А из закрытой книги Данные, и вставлять в книгу Сток в столбец B | Utirka66 | Microsoft Office Excel | 8 | 06.07.2009 09:53 |
Перемножение матриц в Delphi, конкретный случай | Дарья Inc. | Помощь студентам | 1 | 25.04.2009 22:03 |