Avatar billede ghazaleh Nybegynder
16. januar 2006 - 10:21 Der er 4 kommentarer og
1 løsning

Trigger skal ikke indsætte data alligevel

Kan man nå at bremse en trigger i at indsætte data, hvis en betingelse er opfyldt?

Altså noget med:

hvis kontrolfelt = 1
Så lad vær med at indsætte række

Eller er data allerede blevet indsat inden triggeren kører?
Avatar billede arne_v Ekspert
16. januar 2006 - 10:22 #1
RAISEERROR måske
Avatar billede ghazaleh Nybegynder
16. januar 2006 - 10:48 #2
Nej men jeg søgte lige på RAISEERROR og stødte på ROLLBACK og den virker
Avatar billede ghazaleh Nybegynder
16. januar 2006 - 11:03 #3
Du må godt få points for at lede mig i den rigtige retning, hvis du lægger et svar
Avatar billede arne_v Ekspert
16. januar 2006 - 11:21 #4
eksemplerne i manualen antyder at man typisk bruger begge:

CREATE TRIGGER employee_insupd
ON employee
FOR INSERT, UPDATE
AS
/* Get the range of level for this job type from the jobs table. */
DECLARE @@MIN_LVL tinyint,
  @@MAX_LVL tinyint,
  @@EMP_LVL tinyint,
  @@JOB_ID smallint
SELECT @@MIN_LVl = min_lvl,
  @@MAX_LV = max_lvl,
  @@ EMP_LVL = i.job_lvl,
  @@JOB_ID = i.job_id
FROM employee e, jobs j, inserted i
WHERE e.emp_id = i.emp_id AND i.job_id = j.job_id
IF (@@JOB_ID = 1) and (@@EMP_lVl <> 10)
BEGIN
  RAISERROR ('Job id 1 expects the default level of 10.', 16, 1)
  ROLLBACK TRANSACTION
END
ELSE
IF NOT @@ EMP_LVL BETWEEN @@MIN_LVL AND @@MAX_LVL)
BEGIN
  RAISERROR ('The level for job_id:%d should be between %d and %d.',
      16, 1, @@JOB_ID, @@MIN_LVL, @@MAX_LVL)
  ROLLBACK TRANSACTION
END

men jeg troede faktisk at en RAISEERROR var nok til at abortere en insert. Nå - jeg
må huske forkert.

Og et svar far mig.
Avatar billede arne_v Ekspert
16. januar 2006 - 11:21 #5
om igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester