Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как мога да редактирам стойности на INSERT в тригер на SQL Server?

Използвайте спусък след вмъкване. Присъединете се от inserted псевдо таблица към Tb на първичния ключ. След това актуализирайте стойностите на desc. Нещо като:(Но може да не се компилира)

CREATE TRIGGER TbFixTb_Trg 
ON  Tb  
AFTER INSERT 
AS  
BEGIN 
    UPDATE Tb
    SET DESC = SomeTransformationOf(i.DESC)
    FROM Tb
    INNER JOIN inserted i on i.Id = Tb.Id
END  
GO

Това задействане се случва след вмъкването, но преди insert изявлението завършва. Така новите, неправилни стойности вече са поставени в целевата таблица. Това задействане няма да е необходимо да се променя, когато колоните се добавят, изтриват и т.н.

Предупреждение Ограниченията за интегритет се налагат преди задействането на след тригера. Така че не можете да поставите ограничение за проверка, за да наложите правилната форма на DESC. Защото това би накарало изявлението да се провали, преди тригерът да има шанс да поправи нещо. (Моля, проверете отново този параграф, преди да разчитате на него. Измина известно време, откакто написах тригер.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете всички ограничения по подразбиране в базата данни на SQL Server - SQL Server / TSQL урок, част 94

  2. Вмъкване на данни от SQL Server в Salesforce с курсор

  3. прикачената база данни е само за четене

  4. Намерете последния ред в групата чрез query-SQL Server

  5. Използвайте FILE_IDEX(), за да върнете идентификатора на файл с база данни в SQL Server