powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сделать триггер для Каскадного Обновления по первичному ключу?
8 сообщений из 8, страница 1 из 1
Как сделать триггер для Каскадного Обновления по первичному ключу?
    #32015854
Tomas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В SQL Server 7 нет возможности стандартным путем организовать каскадное обновление при создании внешних ключей, надо писать тригер. Но как его сделать не знаю. Ситуация такая: в родительской таблице есть первичный ключ и он единственный уникальный ключ в ней. Как же мне определить соответствие записей в таблицах inserted и deleted если первичный ключ изменился? Т.е. старое значения я могу найти, а на какое новое оно изменилось нет, потому что нет связи между таблицами inserted и deleted. Единственная возможнось, на мой взгляд, надеяться, что изменена была только одна запись, тогда проблема решаема. Но я хочу найти решение для общего случая, когда изменяется нескользо записей в одном опереторе сразу. Если кто знает решение, прошу помочь.

С уважением, Томас
...
Рейтинг: 0 / 0
Как сделать триггер для Каскадного Обновления по первичному ключу?
    #32015862
Pandre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно интересная проблема, которая на мой взгляд может быть решена только вводом дополнительного уникального поля в родительскую таблицу, например

alter table mytable add ext_key uniqueidentifier default newid()
...
Рейтинг: 0 / 0
Как сделать триггер для Каскадного Обновления по первичному ключу?
    #32015881
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык на то он и ключ чтоб он не менялся.
...
Рейтинг: 0 / 0
Как сделать триггер для Каскадного Обновления по первичному ключу?
    #32015893
Tomas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иногда, все таки, и ключи менять приходится. Хотелось бы красивое решение найти
...
Рейтинг: 0 / 0
Как сделать триггер для Каскадного Обновления по первичному ключу?
    #32015894
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разрешить изменять только по одной записи, тогда в inserted/deleted то же будет по одной записи и не надо будет ломать голову, что чему соответсвует.
В inserted - новый ключ, в deleted - старый.
...
Рейтинг: 0 / 0
Как сделать триггер для Каскадного Обновления по первичному ключу?
    #32015895
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...IMHO это единственный вариант без изменения структуры (как советовал Pandre)
...
Рейтинг: 0 / 0
Как сделать триггер для Каскадного Обновления по первичному ключу?
    #32015899
Pandre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Родилась крамольная мысь, хотя подтверждения в Books Online я не нашел: порядок следования записей в inserted соответствует порядку в deleted, тогда можно курсором бежать одновременно по обоим таблицам и модифицировать ссылки в других таблицах.
...
Рейтинг: 0 / 0
Как сделать триггер для Каскадного Обновления по первичному ключу?
    #32015901
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Pandre
Мысль действительно крамольная

Данная проблема не так давно рссматривалась мной
в MS SQL 7.0 каскадное обновление можно организовать но только для одной записи как советовал Glory, закладываться на одинаковый порядок записей в inserted и deleted не стоит, можно немножечко обломаться
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сделать триггер для Каскадного Обновления по первичному ключу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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