Я нахожу, что есть только после и вместо триггеров в sql-сервере. И изменять значения во вложенной таблице pesudo запрещено. Тогда возникает моя проблема: если я хочу проверить данные, которые будут вставлены в мою таблицу, а когда данные нарушают мои ограничения, я должен изменить эти значения на значения по умолчанию, как это сделать? Как обновить значения после вставления? Однако, если нет первичного ключа или colum, который является уникальным в моей таблице, как я могу найти только что вставленную строку и затем обновить ее?T-SQL как изменить значение перед вставкой
4
A
ответ
11
В основном, с INSTEAD OF INSERT
триггером, вы можете добиться того, что вы ищете - просто считывать данные из таблицы INSERTED
псевдо, изменить его, и вставить его в таблицу
Таким образом, ваш триггер будет выглядеть что-то вроде этого:
CREATE TRIGGER YourTrigger ON dbo.YourTable
INSTEAD OF INSERT
AS
SET NOCOUNT ON
-- do the INSERT based on the INSERTED pseudo table, modify data as needed
INSERT INTO dbo.YourTable(Col1, Col2, ....., ColN)
SELECT
Col1, 2 * Col2, ....., N * ColN
FROM
INSERTED
Конечно, вы также можете добавить, например проверяет в виде WHERE
пункт SELECT .... FROM INSERTED
. игнорировать некоторые строки - возможности бесконечны!
+0
Большое спасибо. Это действительно работает. :-) – tmj
Смежные вопросы
- 1. SQL Перед вставкой
- 2. Изменить значения перед вставкой в таблицу/PostgreSQL
- 3. Вместо вставки изменить столбец перед вставкой
- 4. Триггер перед вставкой
- 5. TSQL - Как проверить значение по отношению к значению в другом столбце перед вставкой?
- 6. Как изменить свойство объекта перед вставкой в шаблон Blaze
- 7. Триггер перед вставкой
- 8. создать триггер перед вставкой
- 9. Как проверить значение перед его вставкой в SQL SERVER?
- 10. SQL перед вставкой триггера
- 11. Удаление таблицы перед вставкой
- 12. DataBind() перед вставкой данных?
- 13. проверить перед вставкой
- 14. MySQL Trigger - INET_ATON Перед вставкой
- 15. Как очистить значение post_name перед вставкой в WordPress?
- 16. Как узнать значение строки перед ее вставкой в gridview?
- 17. (mysql, php) Как получить значение поля auto_increment перед вставкой данных?
- 18. Как обновить класс LINQ перед вставкой
- 19. TSQL: как изменить строку, расположенную перед другим рядом?
- 20. Как работать в макропараметре перед вставкой маркера?
- 21. Как изменить скопированное значение перед вставкой на другом листе в excel с помощью Visual Basic
- 22. Изменить размер изображения перед вставкой - IGNITER GROCERY CRUD/CODE
- 23. Проверить последняя запись перед вставкой в БД
- 24. Удалить строку перед вставкой нового
- 25. Apex Trigger-Salesforce перед вставкой
- 26. перед вставкой и после удаления
- 27. Python: обновлять/удалять перед вставкой
- 28. Заблокировать таблицу перед ее вставкой
- 29. Пустой стол перед вставкой pdo
- 30. Обновление массива перед вставкой MySQL?
Точка триггеров 'INSTEAD OF' заключается в том, что вы можете« захватить »эту операцию (например,« INSERT'), а затем сделать что-то * вместо *, что нормальная работа. Таким образом, вы можете считывать значения, изменять их, а затем вызывать 'INSERT' внутри триггера' INSTEAD OF INSERT', чтобы вставить измененные данные. –
. Проблема в том, что если структура таблицы изменяется, вам нужно подумать об изменении триггер. Oracle вместо этого позволяет вам обновить эквивалент «вставленного» объекта («новый»), который гораздо логичнее. –