Welcome to Sign in | Help

Re: Problema creare trigger

  •  05-13-2008, 9:27 AM

    Re: Problema creare trigger

    Pentru a detalia puţin răspunsul lui Bogdan, precizez că în SQL Server trigger-ii sunt lansaţi în execuţie o singură dată pentru fiecare instrucţiune care modifică datele din tabela respectivă, nu pentru fiecare rând modificat. În aceste condiţii, nu are cum să existe o funcţie de genul "last modified" (care ar returna un singur rând), pentru că trebuie să ne precizeze toate rândurile modificate; deci singura modalitate de a afla rândurile modificate este să folosim pseudo-tabelele inserted şi deleted.

    Pentru a face legătura dintre inserted şi tabela noastră este esenţial să existe o cheie unică (altfel am putea să credem că s-au modificat mai multe rânduri decât s-au modificat în realitate). Dacă nu există nicio cheie unică, atunci cel mai simplu este să creăm o coloană de tip int cu atributul IDENTITY (având un nume prestabilit, de exemplu TheID). Dacă există o cheie unică, dar nu ştim care este, am putea să o căutăm în sysindexes, dar e relativ complicat, pentru că am putea găsi o cheie unică formată din mai multe coloane (eventual, am putea simplifica problema căutând doar indecşi care au keycnt=1).

    Răzvan

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems