/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MS-SQL 2000: Hjælp til trigger
Fra : Morten Snedker


Dato : 05-12-05 16:39

Det er vist nok meget simpelt, bare ikke for mig:

To felter, Dato og Bruger.

Jeg vil gerne forhindre, med en trigger, at feltet dato bliver
opdateret, hvis Bruger <> "Morten".

Jeg har kigget på INSTEAD OF, men er det ikke kun INSERT den virker
på?

Ovenstående er simplificeret for eksemplets skyld. Rettigheder på
kolonne-niveau er ikke en option.


mvh /Snedker
---

 
 
Kristian Damm Jensen (05-12-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 05-12-05 22:24


Morten Snedker wrote:
> Det er vist nok meget simpelt, bare ikke for mig:
>
> To felter, Dato og Bruger.
>
> Jeg vil gerne forhindre, med en trigger, at feltet dato bliver
> opdateret, hvis Bruger <> "Morten".
>

Det fremgår ikke, hvad der er nøglen i din relation. Jeg vil antage,
at det *ikke* er bruger, da øvelsen ellers bliver endnu nemmere. Lad
os i stedet kalde nøglen n.

if exists
(select * from inserted i join deleted d on i.n = d.n
where d.bruger = <> 'Morten' and i.dato <> d.dato)
begin
raiserror ...
...
end

VH
Kristian Damm Jensen


Morten Snedker (06-12-2005)
Kommentar
Fra : Morten Snedker


Dato : 06-12-05 12:48

On 5 Dec 2005 13:24:24 -0800, "Kristian Damm Jensen"
<kristiandamm@gmail.com> wrote:

>Det fremgår ikke, hvad der er nøglen i din relation. Jeg vil antage,
>at det *ikke* er bruger, da øvelsen ellers bliver endnu nemmere. Lad
>os i stedet kalde nøglen n.
>
>if exists
> (select * from inserted i join deleted d on i.n = d.n
> where d.bruger = <> 'Morten' and i.dato <> d.dato)
>begin
> raiserror ...
> ...
>end

Først og fremmest tak for input.

Jeg kan godt se fidusen i ovenestående, men jeg er lidt i tvivl om
hvor og hvordan.

Hvis nu ovenstående er en del af en UPDATE-trigger, hvordan annullerer
jeg så opdateringen. _Er_ den gennemført, eller er den ved at blive
gennemført.

Jeg tænker det er raiseerror-delen jeg er tvivl om..?

mvh /Snedker
---

Peter Lykkegaard (06-12-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 06-12-05 19:17

"Morten Snedker" wrote

> Hvis nu ovenstående er en del af en UPDATE-trigger, hvordan annullerer
> jeg så opdateringen. _Er_ den gennemført, eller er den ved at blive
> gennemført.
>
> Jeg tænker det er raiseerror-delen jeg er tvivl om..?
>
Der er en transaction aktiveret
Du bruger RaiseError samt Rollback Transaction

Books OnLine har nogle udmærkede eksempler under "Create Trigger"

- PEter



Morten Snedker (07-12-2005)
Kommentar
Fra : Morten Snedker


Dato : 07-12-05 14:47

On Tue, 6 Dec 2005 19:16:41 +0100, "Peter Lykkegaard"
<plykkegaard@gmail.com> wrote:


>Der er en transaction aktiveret
>Du bruger RaiseError samt Rollback Transaction

Ja, tænk hvor jeg sloges med RaiseError. Kompilering af min trigger
insisterede på, at det bare ikke var ok.

Det var så fordi MS har valgt at spare en vokal væk, da de skulle lave
funktionen RAISERROR....!

Ja ja, den blev ikke fremhævet med blå skrift, og det ku' jeg jo bare
ha' kigget ordentlig efter...men altså, ik'...

mvh /Snedker
---

Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408825
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste