Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
Есть 3 таблицы: Users([id] int, [name] varchar), Documents([id] int, [User_id] int), DocumentsLogs(int[Document_id], [Action] varchar) Пишу триггер который должен при изменении поля [User_id] в таблице Documents делал запись в таблицу DocumentsLogs. В поле [Action] должна попасть запись такого формата: [имя пользователя (старое значение)] + "передал документ" + [имя пользователя (новое значение)] + дата-время. CREATE TRIGGER DocumentTransfer ON Documents BEFORE UPDATE AS SET NOCOUNT ON IF UPDATE(User_id) INSERT INTO DocumentsLogs (Document_id, Action) SELECT ID, ??????????? FROM INSERTED Помогите дописать пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 09:58 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
PavelRemm, авторBEFORE UPDATE чудно https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql?view=sql-server-2017 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:06 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
PavelRemmПишу триггер который должен при изменении поля [User_id] в таблице Documents делал запись в таблицу DocumentsLogs. PavelRemm CREATE TRIGGER DocumentTransfer ON Documents BEFORE UPDATE То, что запрошено обновление, ещё не означает, что оно будет выполнено. А Вы вслепую уже хотите зафиксировать факт его выполнения. Ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:07 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:12 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:12 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
iiyamaPavelRemm, можно другой вариант предложить? Конечно можно, я в процессе обучения, мне все полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:19 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
aleks222, расскажите про BEFORE UPDATE, пожалуйста. :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:20 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
AkinaТо, что запрошено обновление, ещё не означает, что оно будет выполнено. А Вы вслепую уже хотите зафиксировать факт его выполнения. Ошибка. Как поправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:23 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
iiyama можно другой вариант предложить? Жара! Первое вменяемое дополнение после LEAD/LAG и OVER ( ORDER BY ... ROWS ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:26 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
PavelRemm, английский у Вас тоже в процессе обучения? Вам намекают на то, что наде не BEFORE, а AFTER UPDATE делать то, что Вы хотите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:27 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
iap, :) Ну это как в Oracle, только было лень переписывать под SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:27 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
aleks222, Если я правильно понял то вы в итоговую строку вставляете [user_id] int приведенный к varchar. А нужно по этому id получить name из таблицы Users, и уже его вставлять в итоговую строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:29 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
Про AFTER UPDATE до меня дошло, спасибо. Но у меня основанные трудности возникают при формулировке таких "многоэтажных запросов" с участием нескольких таблиц. Поэтому прошу, если кому-то не лень.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 10:43 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
iapaleks222, расскажите про BEFORE UPDATE, пожалуйста. :)) Мне лень было заголовок править - я его не читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 11:14 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
PavelRemmaleks222, Если я правильно понял то вы в итоговую строку вставляете [user_id] int приведенный к varchar. А нужно по этому id получить name из таблицы Users, и уже его вставлять в итоговую строку. Ну... сделай это сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 11:15 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
aleks222, если бы я мог, я бы сюда не писал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 11:25 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
CREATE TRIGGER DocumentTransfer ON Documents AFTER UPDATE AS SET NOCOUNT ON IF UPDATE(WhoHasOriginal) INSERT INTO DocumentsLogs (DocumentID, Action) SELECT ID FROM INSERTED, SELECT Name FROM [Users] WHERE Users.ID = deleted.ID + N' передал(а) документ ' + SELECT Name FROM [Users] WHERE Users.ID = inserted.ID + convert(varchar, getdate(), 105) + ' | ' + convert(varchar, getdate(), 108) ну вот что ему не так?? Error: Incorrect syntax near the keyword 'SELECT'. Incorrect syntax near the keyword 'SELECT'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 11:40 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
PavelRemm, Что это за два SELECTа через запятую?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 11:46 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
PavelRemm CREATE TRIGGER DocumentTransfer ON Documents AFTER UPDATE AS SET NOCOUNT ON IF UPDATE(WhoHasOriginal) INSERT INTO DocumentsLogs (DocumentID, Action) SELECT ID FROM INSERTED, SELECT Name FROM [Users] WHERE Users.ID = deleted.ID + N' передал(а) документ ' + SELECT Name FROM [Users] WHERE Users.ID = inserted.ID + convert(varchar, getdate(), 105) + ' | ' + convert(varchar, getdate(), 108) ну вот что ему не так?? Error: Incorrect syntax near the keyword 'SELECT'. Incorrect syntax near the keyword 'SELECT'. да не говори, с жиру бесится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 11:47 |
|
||
|
Триггер. Предыдущее и Текущее значение
|
|||
|---|---|---|---|
|
#18+
PavelRemm, Взято из безкрайних просторов стака при первой же ссылке из гугла, вроде пока не забанен, хотя утром гнал. Код: sql 1. 2. 3. 4. 5. 6. 7. Если логика понятна, то дополнить и изменить я думаю уже не трудно будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2018, 11:59 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39641228&tid=1689782]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
81ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 474ms |

| 0 / 0 |
