|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Есть вот такое суждение... ЛРСоздать триггеры, реализующие ссылочную целостность, заменив одно ограничение внешнего ключа. Команды создания этого внешнего ключа из сценария не удалять, а добавить команду удаления этого ограничения перед созданием триггеров. Также добавить оператор создания индекса по полю бывшего внешнего ключа. Триггеры должны обеспечивать каскадное обновление и удаление зависимых данных, а также запрет ссылки на отсутствующую запись. Я напрочь не могу понять, как это!? ((( Удалить ограничение нет проблем... Код Код: plaintext 1.
Добавить индекс, тоже... Код Код: plaintext
А вот как создать триггер замещающий вторичный ключ не понятно (((. Помогите пожалуйста, кто чем сможет))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 21:57 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов Фёдор, вообще-то триггеры полноценно заменить ссылочную целостность не могут, потому что их "область видимости" ограничена клиентской транзакцией. Так что "ЛР", в общем-то, написал про сферического коня. Реальное мнение вот такое Вы можете заменить FK контролем целостности в триггерах, но с определенными ограничениями. FK контролирует связи между таблицами посредством индекса, а индексы "видят" все значения ключей, независимо от состояния транзакций, их модифицирующих. Как результат, при помощи FK легко отслеживается ситуация с конкурентными изменениями столбца PK (первичного ключа) в справочной таблице, удалением записи из справочника и т.п. Триггерами отследить такие ситуации нельзя, т.к. они "видят" только те записи, которые разрешено видеть транзакции, их вызвавшей. Поэтому, при замене FK триггерным контролем целостности должны быть соблюдены условия: - записи из справочника никогда не удаляются, или удаляются в монопольном режиме (см. описание транзакций reserving) - столбец первичного ключа справочника никогда не модифицируется (можно создать такой запрет триггером before update). p.s. Специалист по InterBase и Firebird с 21-летним стажем, Кузьменко Д.В. Печать, подпись. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 22:37 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
kdv, я правильно вас понял, что Триггеры должны обеспечивать каскадное обновление и удаление зависимых данных, а также запрет ссылки на отсутствующую запись В триггерах не возможно!? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 22:47 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 22:49 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов Фёдоря правильно вас понял, что В триггерах не возможно!? это возможно, но для однопользовательского режима. В многопользовательском, когда хотя бы 2 пользователя полезут что-то в этих таблицах менять и удалять, вся эта "целостность на триггерах" поломается к чертям. Пример. есть 2 таблицы в связке мастер-деталь. т.е. 1:М. Ситуация - Транзакция 1 добавляет запись в "деталь" со ссылкой на существующую запись в "мастере" с кодом N - Транзакция 2 удаляет запись из "мастера" с кодом N. При ФК -Транзакция 2 не видит вставок в "деталь" записей, ссылающихся на справочную запись N. Однако, поскольку индекс видит, FK не дает Транзакции 1 удалить такую запись. Результат - ошибка в Транзакции 1 или в транзакции 2 (кто первый). При триггерах вместо ФК. - Транзакция 1 не видит записей, вставленных в деталь Транзакцией 2. Поэтому удаляет запись N - Транзакция 2 не видит "удаления" записи N в мастере, поэтому добавляет записи в деталь со ссылкой на N Результат - в детали есть записи, на которые нет ссылок в мастере. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 22:56 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
[quot Ашкалов Фёдор]Триггеры должны обеспечивать ... запрет ссылки на отсутствующую запись[/quot ] В триггерах не возможно!? Нет, невозможно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 22:59 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
kdv , В общем начну с того что это задание Лабораторной работы. Там написано что нужно сделать. В принципе, если это хоть как нибудь возможно, не могли бы вы скинуть кусочек кода))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:03 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов Фёдор, кусочек кода - увольте. тем более что там для полной картины надо несколько триггеров делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:10 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов Фёдор, как вы думаете, почему никто не торопится выкладывать вам готовое решение? Есть притчи, подобные этой: "Дай человеку рыбу и ты накормишь его на один день. Научи человека рыбачить и ты накормишь его на всю жизнь", которые наставляют нас "учить людей ловить рыбу". Для начала погуглите что такое RDBMS или "реляционные базы данных", затем откройте мануал по Firebird'у и прочтите интересующие вас места этого мануала. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:15 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов ФёдорЯ умею анализировать данные. )) Ну так возьми и проанализирую, что делает FK а) при вставке в мастер-таблицу б) при изменении мастер-таблицы в) при удалении из масер-таблицы г) при вставке в деталь-таблицу д) при изменении деталь-таблицы е) при удалении из деталь-таблицы А потом останется чисто механическая работа: запрограммировать всё то же самое в шести соответствующих триггерах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:33 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов ФёдорВопрос, а этот то форум зачем тогда??? вот зачем 1991850 и, да, студентов, которые хотят получить готовый ответ, тут не любят. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:33 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов Фёдор, потому что в мануале этого и не должно быть. Тебе уже сказали что в многопользовательской среде это не будет работать. Но если надо сдать лабу, то вот тебе 1 наводка: Необработанное исключение в триггере отменяет действие которое привело к вызову этого триггера ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:33 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов Фёдор, меня давно бесполезно брать на "слабо?". Не отказывайтесь от удочки! А если вам нужен пример триггера, то можете посмотреть на пример триггеров для обновляемого представления: 18347674 . ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:36 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов Фёдор, кстати у FK ещё есть опции ON DELETE и ON UPDATE ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:37 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Всем спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:37 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
DBConstructor, до обновляемых представлений он ещё не дорос. Не надо путать новичка. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2015, 23:39 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
Ашкалов ФёдорТем более я не думаю, что кого то сильно волнует буду ли я понимать суть вопроса или нет. Волнует. Если человек пришел и сказа, попросил готовый рецепт и получил его - он прийдет сюда опять, и опять за готовым рецептом. К тому же вы типа учитесь, так начните уже заниматься учебой а не копипастой. Кроме доки можно/нужно еще сходить на ibase.ru - там куча полезных статей, в т.ч. и по вашему вопросу. Ну и препод ваш дает не самые лучшие задания. Или не на том сервере. На Firebird при написании лучше всегда ориентироваться на многопользовательность. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 10:13 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
DBConstructorА если вам нужен пример триггера, то можете посмотреть на пример триггеров для обновляемого представления: 18347674 . После очередного такого сообщения всё яснее становится, что пишешь в попытке хвастать своим размером ... знаний, а не для того, чтобы кому-то в чём-то помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:38 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
WildSeryПосле очередного такого сообщения всё яснее становится, что пишешь в попытке хвастать своим размером ... знаний, а не для того, чтобы кому-то в чём-то помочь. И смысл твоего комментария? Какую ценную мысль ты хочешь до меня донести? ТС попросил пример триггера для обучения на основе анализа кода. ТС получил пример триггера для анализа. В чем проблема? Что было ближе и что помню где лежит, на то и привел ссылку. Причем тут "хвастать"? Нечем там хвастать! Обычное обновляемое представление, коих в инете можно нарыть немало. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:49 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
DBConstructor, ТС про обновляемые представления не спрашивал. Хочешь помочь ну так напиши ему триггеры для реализации псевдо FK. Лично мне лень. В книжке Хелен такой пример есть кстати. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:56 |
|
Вопрос по триггерам и ссылочной целостности
|
|||
---|---|---|---|
#18+
DBConstructorИ смысл твоего комментария? Какую ценную мысль ты хочешь до меня донести?Если тонких намёков не понимаешь, и требуешь идти до конца - ладно, скажу. Смысл моего комментария - плюсик заряжен. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 15:59 |
|
|
start [/forum/topic.php?fid=40&msg=39116825&tid=1562478]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 296ms |
total: | 431ms |
0 / 0 |