|
|
|
Триггер на вставку
|
|||
|---|---|---|---|
|
#18+
Добрый день еще раз ! Я полностью разобрался с Active Directory, большое вам спасибо, но у меня возник новый вопрос, с которым я уже целый день мучаюсь. Значит, существует определенная таблица с определенным количеством полей, и программа (ISA server) периодически складывает туда данные. Я добавил в эту таблицу еще одно поле, и теперь мне необходимо написать триггер, который, основываясь на данных INSERTED, записывал в созданное мной поле определенное значение, основываясь на одном из значений из INSERTED. Пишу что-то в духе : CREATE TRIGGER InsertAccountName ON [dbo].[WebProxyLog] FOR INSERT AS DECLARE @AccountName nvarchar(50), @ClientUserName nvarchar(50) SET @ClientUserName=(SELECT ClientUserName FROM inserted) SET @AccountName = (SELECT AccountName FROM AllUsers WHERE ClientUserName=@ClientUserName) INSERT INTO WebProxyLog(AccountName) VALUES (ISNULL(@AccountName , 'Чертов anonymous !!!')) Ничего не получается, в поле AccountName остается NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 15:58:44 |
|
||
|
Триггер на вставку
|
|||
|---|---|---|---|
|
#18+
Надо добавить в таблицу уникальный ключ строки и в триггере связывать inserted и WebProxyLog update WebProxyLog set w.AccountName = (ISNULL(@AccountName , 'Чертов anonymous !!!')) from WebProxyLog w join inserted i on w.key = i.key где key - ключевой столбец ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 16:10:04 |
|
||
|
Триггер на вставку
|
|||
|---|---|---|---|
|
#18+
Недопонял. Мне необходимо еще поле IDENTITY добавить ? Но ведь ISA понятия не имеет о том, что в таблицу, куда он данные сует, существует этот Identity. Таким образом, INSERTED.KEY будет указывать непонятно на что, как мне кажется. Или сделать ключевым одно из существующих полей ? Или я совсем ни черта не понимаю ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 16:17:07 |
|
||
|
Триггер на вставку
|
|||
|---|---|---|---|
|
#18+
Я не знаю формат этой таблицы, нужно найти или добавить ключ. В общем смысл в том,что по данным в строке из таблицы inserted нужно найти соответствующую вставленную строку и проапдейтить ее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 16:27:18 |
|
||
|
Триггер на вставку
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 17:17:44 |
|
||
|
Триггер на вставку
|
|||
|---|---|---|---|
|
#18+
добавь в таблицу в котору пишет isa в конец поле identity.... я с иской не работал, но думаю что у него похожая схема с iis... покопайся в настройках... там гдето есть скрипт создания таблички.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 21:22:12 |
|
||
|
Триггер на вставку
|
|||
|---|---|---|---|
|
#18+
Здесь прозвучало много советов, в том числе и советы создать ключ, но на слона то никто внимания и не обратил. 2 Eduard Во первых Вы написали триггер для обработки одной строки, в то время как сервер обрабатывает inserted как таблицу, так что если будет вставлено несколько записей он отработает по одной из них. Сравните с моим вариантом триггера. Во вторых естесвенно, что в таблице должен быть ключ, я просто предположил, что в Вашем случае используется естественный ключ. В третих проверка isnull может не срабатывать из-за того, что клиент, как я понимаю у Вас это IIS, передает не Null, а что то другое, например пустую строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2002, 07:38:04 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1819304]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
58ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 357ms |

| 0 / 0 |
