Pālekt uz saturu


Foto
- - - - -

MS SQL trigeri


  • Lūdzu pieslēdzies, lai atbildētu
2 atbildes uz šo tēmu

#1 Jeasus

Jeasus
  • Biedri
  • 662 raksti
  • Atrodos:Riga

Pievienots 15 January 2009 - 16:58

tātad tabulā vēlos trigeri kas stradatu inserta vietaa, un parbauditu datus.
ja dati neatbilst normām tad errors, ja atbilst tad veicam insertu. meistaram drosvien trivials gadijums, es netieku galaa ar manuaaliem.
jautajums nr.1: kā lai count(id) skaitu dabuju @skaits mainigajaa?
jautajums nr.2: kā lai tieku klat tam vertibam kas bij insert vaicajumaa kura vieta strada sis trigeris?
CREATE TRIGGER insertEksponats ON eksponats
INSTEAD OF INSERT
AS
DECLARE @skaits int;
// select count(id) from tabula where lauks='konkreta vertiba no inserta vaicajuma kura vieta starda sis trigeris'
// tad count rezultatu kautka iedabuu @skaits
IF @skaits>0
BEGIN
	PRINT 'man kludas pazinojums'
END
ELSE
BEGIN
	INSERT INTO eksponats(id, vertiba) VALUES(id,vertiba)
	//pietam shai te insertaa vajadzetu izpildit to insertu kura vieta nostradaa sis trigeris
	//vai vismaz ar tam apsaam vertibaam
END
paldies.

Šo rakstu rediģēja Jeasus: 15 January 2009 - 16:59



Nevēlies vairs redzēt šo reklāmu? Kļūsti par BOOT.Lv foruma biedru!

#2 eMDiiPii

eMDiiPii

    resident knowledge

  • Biedri
  • 2,235 raksti
  • Intereses:Programmēšana, džezs un klasiskā mūzika

Pievienots 16 January 2009 - 03:14

MSSQL iebāž visus insert`a laukus virtuālā tabelē Inserted
So .
DECLARE @foobar VARCHAR(100) 

SELECT @foobar = (SELECT foobar FROM Inserted)

  • SQLBlog.lv iesaka

#3 SQLBlog.lv

SQLBlog.lv
  • Jaunbiedri
  • 12 raksti
  • Atrodos:Rīga

Pievienots 08 June 2012 - 15:34

Laicīgā atbilde :).

par trigeriem plašāk var palasīt šeit Trigeri SQL Server.
ir inserted un deleted tabulas. Tev trigerī tad būtu jjāsien tabula ar "inserted" tabulu pēc primārās atslēgas laukiem.
Tomēr ir vēl mazliet sarežģītāk- jāņem vērā, ka var ievietot uzreiz daudzas rindas, no kurām dažas var atbilst Tevis izvirzītajam kritērijam un dažas nē.

un vispār šādi šo problēmu manuprāt labāk nerisināt.. tā vietā izmantot, piemēram, procedūru.


 
 
 
 


0 Lietotāji(s) lasa šo tēmu

0 biedri(s), 0 viesi(s), 0 anonīmi(s) lietotāji(s)