|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.11.2014, 15:15 | #1 |
Форумчанин
Регистрация: 15.10.2011
Сообщений: 139
|
Триггер, неправильно выполняется условие
Есть таблица
в ней по [код_статуса_брони] остаются те помещения, которые заняты в текущий момент (код 1 и 2). запрос для этого Код:
пишу триггер событие добавление записи Код:
Программист это не профессия, программист - это образ жизни.
|
19.11.2014, 15:39 | #2 | |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
Логика такова, что этот запрос
Цитата:
Создайте хранимую процедуру для добавления и в ней, перед тем как непосредственно добавить запись, выполняйте проверку. Либо используйте триггеры instead of. Последний раз редактировалось Streletz; 19.11.2014 в 15:49. |
|
19.11.2014, 16:20 | #3 | ||
Форумчанин
Регистрация: 15.10.2011
Сообщений: 139
|
Спасибо. Я понял почему она выдает результат больше нуля. Но как получить запись которая добавляется?
Цитата:
Цитата:
Программист это не профессия, программист - это образ жизни.
Последний раз редактировалось Stilet; 19.11.2014 в 17:17. |
||
19.11.2014, 17:54 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Там не копия, а временная таблица именно с добавляемыми записями. И триггер отрабатывает после вставки. Т.е. вставляемые записи уже есть в таблице и их нужно исключить во WHERE. И отката транзакции в упор не вижу. Да, и наверно лучше триггер instead of
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
19.11.2014, 18:31 | #5 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
Как-то плоховато у Вас с теорией, автор.
Да и с проектированием. Вот что такое по логике проверка свободных номеров - это выдача инфы ресепшенисту или заезжающему о количестве и ассортименте доступных для съёма номеров. При чём тут проверка _вставки_ ? Во-вторых, недопущение ошибочных данных с т.з. бизнес-логики, а в этой задаче - занятие уже занятого номера, обычно перекладывают на плечи автоматики, а не пишут свой код, т.е. это декларативная постановка, а не императивная. В терминах реляционной модели для этого используются ключи, в данном случае мог бы подойти уникальный ключ на поле Код_помещения и на нечто, отражающее занятость номера. Вот как выразить последнюю, ввиду того, что там 2 разных кода - не знаю.. наверное через вычисляемое поле как-то можно. Если же писать код, то лучше писать ХП, а не триггер, триггеры вообще редко стоит применять, ибо они легко могут давать сложности. А про триггеры конечно ещё почитать стоит. Ну и общего плана замечания - имхо,некрасиво, что в базе поля на русском. Ну и COUNT(*) - плохая практика, указывайте одно какое-то поле, обычно первичный ключ, т.к. * не всегда сервер разрулит это в оптимизацию, думаю. |
19.11.2014, 19:14 | #6 | |
Форумчанин
Регистрация: 15.10.2011
Сообщений: 139
|
Цитата:
Программист это не профессия, программист - это образ жизни.
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не выполняется условие | Nich. | C# (си шарп) | 0 | 27.11.2013 18:10 |
$.ajax не выполняется условие | Mixasnt | JavaScript, Ajax | 24 | 11.11.2013 23:42 |
Не выполняется условие | Astash | Помощь студентам | 2 | 03.12.2011 11:21 |
Не выполняется условие | Ragnarek45 | Общие вопросы Delphi | 3 | 10.12.2010 15:08 |
не выполняется условие | Link12 | Общие вопросы C/C++ | 6 | 30.03.2010 19:36 |