powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / UPDATE table INSERTED!!!!! Ну очень нужно. Народ помогите.
3 сообщений из 3, страница 1 из 1
UPDATE table INSERTED!!!!! Ну очень нужно. Народ помогите.
    #32006700
SergeyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.
Я может всем надоел, но все-таки очень нужно.

Еще раз о проблеме.
Есть две таблицы Т1 и Т2
При добавлении в таблицу Т2 нужно выполнить добавление(я) в таблицу Т1 А полученные Ид
будут использованы как PKID при добавлении в Т2.

Я перед MSSQL работал с INFORMIX там это сделать было очень просто.
В сиквеле я уже забадался.

Фактически нужно обновить поле PkId в таблице INSERTED.
Но ее обновлять нельзя ((((((((((((((((((((((((((((((((((((((((((

Пока у меня есть только один вариант.
1. Тригер INSTEAD OF ON T2
2. Из INSERTED делаем TempTable
3. По TempTable делаем курсор
4. Пробегаем по всем записям и обновляем pkId на GetNewID
5. Делаем INSERT T2 FROM SELECT * #TempTable

Но блин это же сколько разных шагов.
Народ помогите! Может у кого есть какие идеи или опыт как положительный так и отрецательный.
Спасибо...
...
Рейтинг: 0 / 0
UPDATE table INSERTED!!!!! Ну очень нужно. Народ помогите.
    #32006705
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаг 4 не ясен
Зачем курсор. Это замедляет. Можно же из временной insert в T1
...
Рейтинг: 0 / 0
UPDATE table INSERTED!!!!! Ну очень нужно. Народ помогите.
    #32006710
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
1. То, что добавление в таблицу на стороне Foreign Key должно вызывать добавление Primary key приводит к большим подозрениям на ошибки в стратегии проектирования структуры таблиц.
2. Таблица Inserted является НЕ модифицируемой. И смысла в ее модифицируемости не т никакого и быть не может. Это просто "отчет о произведенных изменениях" в базовой таблице. Какой смысл подправлять отчет - ведь результаты от этого не изменятся (если только для самообмана).
3. Без Instead-триггера тут действительно не обойтись. Только пункты 3, 4 и 5 - под вопросом. Кроме ID наверняка что-то еще помещается в таблицу Т1? Как ты определяешь, что именно должно быть добавлено? Если только фраза "новая запись", то выглядит это примерно так:
create trigger ttt on T2
instead of insert
as
set nocount on
insert into T1 (ID, Name) -- Добавляем только записи с НОВЫМИ идентификаторами в Т1
select distinct ID, 'Новая запись' from Inserted where not ID in (select ID from T1)
insert into T2 (ID, Fld1, Fld2, Fld3) -- Добавляем добавленные записи в Т2
select * from Inserted
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / UPDATE table INSERTED!!!!! Ну очень нужно. Народ помогите.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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