|
|
|
переписать тригер с Oracle PL/SQL на MSSQL T-SQL
|
|||
|---|---|---|---|
|
#18+
Простите за беспокойство , но люди мы в MSSQL не местные. Вот есть CREATE OR REPLACE TRIGGER a.TASKS_BU_FIXER BEFORE UPDATE OF "QTY" ON a.TASKS FOR EACH ROW begin select staff.id into :NEW.FIXER from a.staff where TRIM(staff.login) = USER; select SYSDATE into :NEW.FIXEDDATE from dual; end; смысл работы - если изменяется значение поля QTY то дополнительно надо изменить поля кто (FIXER) и когда (FIXEDDATE). Игорь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 13:27:20 |
|
||
|
переписать тригер с Oracle PL/SQL на MSSQL T-SQL
|
|||
|---|---|---|---|
|
#18+
Добрый вечер, Ваш триггер может выглядеть таким образом: \nCREATE TRIGGER TASKS_AU_FIXER ON TASKS FOR UPDATE AS SET NOCOUNT ON if UPDATE(QTY) begin UPDATE TASKS SET FIXER = (select staff.id from staff where LTRIM(RTRIM(staff.login)) = SESSION_USER), FIXEDDATE = GETDATE() FROM TASKS t, inserted i WHERE t.id = i.id end GO Я не стал указывать владельца (a) триггера и таблиц (необходимо). Также переименовал триггер в TASKS_AU_FIXER, т.к. триггеров BEFORE в MS SQL Server'е 2000 нет (только AFTER & INSTEAD OF). Ну и предположил, что в таблице TASKS есть ключевое поле id (по аналогии с таблицей staff) Обработки ошибок (типа отсутствия в таблице staff записи, соответствующей SESSION_USER) также нет. Удачи Вам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 20:51:25 |
|
||
|
переписать тригер с Oracle PL/SQL на MSSQL T-SQL
|
|||
|---|---|---|---|
|
#18+
Спасибо большое за помошь. Но решение выглядит по меньшей мере странно: из тригера на update запускать еще один update на мутирующую таблицу. Неужели нет пути доступа к inserted на его изменение ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2002, 07:40:56 |
|
||
|
переписать тригер с Oracle PL/SQL на MSSQL T-SQL
|
|||
|---|---|---|---|
|
#18+
Добрый день из тригера на update запускать еще один update на мутирующую таблицу. Неужели нет пути доступа к inserted на его изменение ? Такова специфика MS SQL Server'а: таблицы inserted и deleted служат для опроса, а не изменения (Two special tables are used in trigger statements: the deleted table and the inserted table. Microsoft® SQL Server™ 2000 automatically creates and manages these tables. You can use these temporary, memory-resident tables to test the effects of certain data modifications and to set conditions for trigger actions; however, you cannot alter the data in the tables directly.) Полагаю, триггер должен работать. Или нет? Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2002, 08:32:23 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32031545&tid=1822527]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 282ms |

| 0 / 0 |
