Forum » Programiranje » [SQL]Trigger
[SQL]Trigger
vvisoc_1 ::
Pozdravljeni!
Imam tabelo "Opravila" in njej pridadajoč prožilec. Prožilec se proži ob vsakem update-u te tabele in sicer tako da poveča vrednost nekega polja v posamezni koloni za 1. To mi sicer sedaj deluje vendar prožilec nima pripadajočega "WHERE" stavka, da bi povečal vrednost določenemu polju v določeni koloni ampak to stori vsem v tabeli. Zanima me torej, kako bi pridobil vrednost tiste kolone (torej ID), ki sem jo posodobil? Uporabljam pa Microsoft sql server express.
tl;dr : Kako pridobiti ID ob update-u neke tabele z trigerjem v MSSQL?
Imam tabelo "Opravila" in njej pridadajoč prožilec. Prožilec se proži ob vsakem update-u te tabele in sicer tako da poveča vrednost nekega polja v posamezni koloni za 1. To mi sicer sedaj deluje vendar prožilec nima pripadajočega "WHERE" stavka, da bi povečal vrednost določenemu polju v določeni koloni ampak to stori vsem v tabeli. Zanima me torej, kako bi pridobil vrednost tiste kolone (torej ID), ki sem jo posodobil? Uporabljam pa Microsoft sql server express.
tl;dr : Kako pridobiti ID ob update-u neke tabele z trigerjem v MSSQL?
FrEaKmAn ::
Ta pristop, da gre skozi celo tabelo ni v redu, ker potem celotno tabelo oziroma vsako vrstico updejta in ne moreš določiti IDja. Nazadnje ko sem gledal, lahko preprosto podaš where k UPDATU..
je možno pastat TRIGGER?
je možno pastat TRIGGER?
smoke ::
Nekak tak bi moglo bit
create trigger [dbo].[_tOpravila] on [dbo].[Opravila] for update as set nocount on update o set o.dolocenopolje = (o.dolocenopolje+1) from Opravila o join inserted i on o.ID = i.ID
Zgodovina sprememb…
- spremenil: smoke ()
zavajon ::
To je res, inserted je temp tabela, ki jo lahko uporabljaš v triggerjih in ima enako strukturo kot tabela triggerja. Poleg te obstaja še tabela deleted. Pri insert or update or delete triggerjih lahko ugotovimo, za kakšno operacijo je šlo, tako da left joinamo inserted z updated.
Je pa malo nerodno to narejeno v MSSQL, ker nimaš row level triggerjev, ampak le statement, tako da v primeru transakcije več rowov z enim stavkom se ne moreš eksplicitno sklicevati na določeno vrstico.
Je pa malo nerodno to narejeno v MSSQL, ker nimaš row level triggerjev, ampak le statement, tako da v primeru transakcije več rowov z enim stavkom se ne moreš eksplicitno sklicevati na določeno vrstico.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [SQL] primary key inkrementalno dodajanje (strani: 1 2 )Oddelek: Programiranje | 5394 (4584) | ejresnevem |
» | SQL backup importOddelek: Programiranje | 1064 (866) | meh |
» | c# - mssql kombinacija / problem pri zapisu row-a v bazoOddelek: Programiranje | 1598 (1407) | darkolord |
» | SQL trigger OracleOddelek: Programiranje | 1174 (1082) | PunXXX |
» | [T-SQL] Kako vnest podatek v bazo in da ti hkrati vrne id?Oddelek: Programiranje | 2896 (2614) | dmok |