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

Най-ефективният метод за откриване на промяна на колона в MS SQL Server

Нека започнем с това, че никога не бих и имам предвид никога да не извиквам съхранена процедура в тригер. За да отчетете вмъкване на няколко реда, ще трябва да преминете с курсор през proc. Това означава, че 200 000 реда, които току-що сте заредили чрез заявка, базирана на набор (да речем актуализиране на всички цени с 10%), може да блокират таблицата за часове, докато тригерът се опитва храбро да се справи с натоварването. Освен това, ако нещо се промени в процедурата, можете изобщо да прекъснете всички вмъквания в таблицата или дори напълно да затворите масата. Твърдо вярвам, че тригерният код не трябва да извиква нищо друго извън тригера.

Лично аз предпочитам просто да си върша задачата. Ако съм написал действията, които искам да извърша правилно в тригера, той само ще актуализира, изтрие или вмъкне там, където колоните са променени.

Пример:да предположим, че искате да актуализирате полето last_name, което съхранявате на две места поради денормализиране, поставено там от съображения за производителност.

update t
set lname = i.lname
from table2 t 
join inserted i on t.fkfield = i.pkfield
where t.lname <>i.lname

Както можете да видите, това ще актуализира само lnames, които са различни от това, което в момента е в таблицата, която актуализирам.

Ако искате да направите одит и да запишете само онези редове, които са се променили, тогава направете сравнението, като използвате всички полета, нещо като където i.field1 <> d.field1 или i.field2 <> d.field3 (и т.н. през всички полета)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пример за CTE и рекурсия на SQL Server

  2. Как да експортирате utf-8 данни от sql сървър 2008 в excel

  3. Как да увеличите допустимия размер на прикачените файлове при изпращане на имейл в SQL Server (T-SQL)

  4. Представяме първата в света SaaS платформа за предоставяне на задълбочена диагностика за хибридни SQL сървърни среди

  5. Създайте UDF, обвързан със схема в SQL Server