Jump to content

MS SQL trigeri


Jeasus
 Share

Recommended Posts

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.

Labots - Jeasus
Link to comment
Share on other sites

MSSQL iebāž visus insert`a laukus virtuālā tabelē Inserted

So .

DECLARE @foobar VARCHAR(100) 

SELECT @foobar = (SELECT foobar FROM Inserted)

  • Patīk 1
Link to comment
Share on other sites

  • 3 years later...
SQLBlog.lv

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.

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...