powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по триггерам и ссылочной целостности
21 сообщений из 21, страница 1 из 1
Вопрос по триггерам и ссылочной целостности
    #39116807
Есть вот такое суждение...

ЛРСоздать триггеры, реализующие ссылочную целостность, заменив одно
ограничение внешнего ключа. Команды создания этого внешнего ключа из
сценария не удалять, а добавить команду удаления этого ограничения перед
созданием триггеров. Также добавить оператор создания индекса по полю
бывшего внешнего ключа. Триггеры должны обеспечивать каскадное обновление
и удаление зависимых данных, а также запрет ссылки на отсутствующую запись.

Я напрочь не могу понять, как это!? (((
Удалить ограничение нет проблем...

Код
Код: plaintext
1.
 ALTER TABLE TB _STATISTIC
 DELETE CONSTRAINT  C_CHILT1;


Добавить индекс, тоже...

Код
Код: plaintext
 CREATE INDEX  INDEX_FOREIGN  ON  TB_STATISTIC ( Id_user );


А вот как создать триггер замещающий вторичный ключ не понятно (((. Помогите пожалуйста, кто чем сможет)))
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116825
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов Фёдор,

вообще-то триггеры полноценно заменить ссылочную целостность не могут, потому что их "область видимости" ограничена клиентской транзакцией.

Так что "ЛР", в общем-то, написал про сферического коня.

Реальное мнение вот такое

Вы можете заменить FK контролем целостности в триггерах, но с определенными ограничениями. FK контролирует связи между таблицами посредством индекса, а индексы "видят" все значения ключей, независимо от состояния транзакций, их модифицирующих. Как результат, при помощи FK легко отслеживается ситуация с конкурентными изменениями столбца PK (первичного ключа) в справочной таблице, удалением записи из справочника и т.п. Триггерами отследить такие ситуации нельзя, т.к. они "видят" только те записи, которые разрешено видеть транзакции, их вызвавшей.

Поэтому, при замене FK триггерным контролем целостности должны быть соблюдены условия:

- записи из справочника никогда не удаляются, или удаляются в монопольном режиме (см. описание транзакций reserving)
- столбец первичного ключа справочника никогда не модифицируется (можно создать такой запрет триггером before update).


p.s. Специалист по InterBase и Firebird с 21-летним стажем, Кузьменко Д.В. Печать, подпись.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116827
kdv, я правильно вас понял, что
Триггеры должны обеспечивать каскадное обновление
и удаление зависимых данных, а также запрет ссылки на отсутствующую запись

В триггерах не возможно!?
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116828
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

ты это. не давай на ассемблу ссылок, пожалуйста. более стабильные - на ibase.ru и firebirdsql.org
Тем более что на ibase.ru есть дока в виде html , и в таком виде ее больше нигде нет.
А то, что оно отстает от ассемблы на месяц-два, так для 2.5 сейчас там только мелкие правки идут, поэтому особого смысла брать "самый свежак" для новичков нет.

http://www.firebirdsql.org/file/documentation/reference_manuals/Firebird_Language_Reference_RUS.pdf
http://www.ibase.ru/firebird/Firebird_2_5_Language_Reference_RUS.pdf
http://www.ibase.ru/firebird/doc/langref25rus.html
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116832
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов Фёдоря правильно вас понял, что
В триггерах не возможно!?
это возможно, но для однопользовательского режима. В многопользовательском, когда хотя бы 2 пользователя полезут что-то в этих таблицах менять и удалять, вся эта "целостность на триггерах" поломается к чертям.

Пример. есть 2 таблицы в связке мастер-деталь. т.е. 1:М.
Ситуация
- Транзакция 1 добавляет запись в "деталь" со ссылкой на существующую запись в "мастере" с кодом N
- Транзакция 2 удаляет запись из "мастера" с кодом N.

При ФК
-Транзакция 2 не видит вставок в "деталь" записей, ссылающихся на справочную запись N. Однако, поскольку индекс видит, FK не дает Транзакции 1 удалить такую запись.
Результат - ошибка в Транзакции 1 или в транзакции 2 (кто первый).

При триггерах вместо ФК.
- Транзакция 1 не видит записей, вставленных в деталь Транзакцией 2. Поэтому удаляет запись N
- Транзакция 2 не видит "удаления" записи N в мастере, поэтому добавляет записи в деталь со ссылкой на N
Результат - в детали есть записи, на которые нет ссылок в мастере.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116833
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Ашкалов Фёдор]Триггеры должны обеспечивать ... запрет ссылки на отсутствующую запись[/quot ]
В триггерах не возможно!?
Нет, невозможно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116836
kdv , В общем начну с того что это задание Лабораторной работы.
Там написано что нужно сделать. В принципе, если это хоть как нибудь возможно, не могли бы вы скинуть кусочек кода)))
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116839
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов Фёдор,

кусочек кода - увольте. тем более что там для полной картины надо несколько триггеров делать.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116840
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов Фёдор, как вы думаете, почему никто не торопится выкладывать вам готовое решение?
Есть притчи, подобные этой: "Дай человеку рыбу и ты накормишь его на один день. Научи человека рыбачить и ты накормишь его на всю жизнь", которые наставляют нас "учить людей ловить рыбу".
Для начала погуглите что такое RDBMS или "реляционные базы данных", затем откройте мануал по Firebird'у и прочтите интересующие вас места этого мануала. ;)
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116854
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов ФёдорЯ умею анализировать данные. ))
Ну так возьми и проанализирую, что делает FK
а) при вставке в мастер-таблицу
б) при изменении мастер-таблицы
в) при удалении из масер-таблицы
г) при вставке в деталь-таблицу
д) при изменении деталь-таблицы
е) при удалении из деталь-таблицы

А потом останется чисто механическая работа: запрограммировать всё то же самое в шести
соответствующих триггерах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116855
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов ФёдорВопрос, а этот то форум зачем тогда???
вот зачем 1991850
и, да, студентов, которые хотят получить готовый ответ, тут не любят.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116856
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов Фёдор,

потому что в мануале этого и не должно быть. Тебе уже сказали что в многопользовательской среде это не будет работать. Но если надо сдать лабу, то вот тебе 1 наводка: Необработанное исключение в триггере отменяет действие которое привело к вызову этого триггера
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116857
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов Фёдор, меня давно бесполезно брать на "слабо?". Не отказывайтесь от удочки!
А если вам нужен пример триггера, то можете посмотреть на пример триггеров для обновляемого представления: 18347674 .
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116859
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов Фёдор,

кстати у FK ещё есть опции ON DELETE и ON UPDATE
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116860
Всем спасибо)
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39116862
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

до обновляемых представлений он ещё не дорос. Не надо путать новичка.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39117021
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашкалов ФёдорТем более я не думаю, что кого то сильно волнует буду ли я понимать суть вопроса или нет.

Волнует.
Если человек пришел и сказа, попросил готовый рецепт и получил его - он прийдет сюда опять, и опять за готовым рецептом.
К тому же вы типа учитесь, так начните уже заниматься учебой а не копипастой.

Кроме доки можно/нужно еще сходить на ibase.ru - там куча полезных статей, в т.ч. и по вашему вопросу.

Ну и препод ваш дает не самые лучшие задания. Или не на том сервере.
На Firebird при написании лучше всегда ориентироваться на многопользовательность.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39117131
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorА если вам нужен пример триггера, то можете посмотреть на пример триггеров для обновляемого представления: 18347674 .
После очередного такого сообщения всё яснее становится, что пишешь в попытке хвастать своим размером ... знаний, а не для того, чтобы кому-то в чём-то помочь.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39117147
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryПосле очередного такого сообщения всё яснее становится, что пишешь в попытке хвастать своим размером ... знаний, а не для того, чтобы кому-то в чём-то помочь.
И смысл твоего комментария? Какую ценную мысль ты хочешь до меня донести?
ТС попросил пример триггера для обучения на основе анализа кода. ТС получил пример триггера для анализа. В чем проблема?
Что было ближе и что помню где лежит, на то и привел ссылку. Причем тут "хвастать"? Нечем там хвастать! Обычное обновляемое представление, коих в инете можно нарыть немало.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39117158
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

ТС про обновляемые представления не спрашивал. Хочешь помочь ну так напиши ему триггеры для реализации псевдо FK. Лично мне лень. В книжке Хелен такой пример есть кстати.
...
Рейтинг: 0 / 0
Вопрос по триггерам и ссылочной целостности
    #39117498
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorИ смысл твоего комментария? Какую ценную мысль ты хочешь до меня донести?Если тонких намёков не понимаешь, и требуешь идти до конца - ладно, скажу. Смысл моего комментария - плюсик заряжен.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по триггерам и ссылочной целостности
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]