Ik heb een leuke uitdaging voor een beginnende sql programmeur zoals ik...
Ik heb een aantal stored procedures geschreven die ieder 'iets' uit de database controleren.
Ik wil deze sp's aanroepen via een trigger op het moment dat er een wijziging in een tabel plaatsvindt. Ik gebruik sql server 2000. De trigger activeert dan de stored procedures en afhankelijk van het resultaat hiervan wil ik één veld in dezelfde tabel updaten met een statuscode.
Volgens mij moet de opbouw van de trigger er zo uitzien:
CREATE TRIGGER MyTrigger ON [dbo].[TService]
after insert, update
AS
declare @row_id varchar(4), @owner_type varchar(10)
execute sp_Rule1(@row_id);
execute sp_Rule2;
/* etc, nog een paar sp's */
Wat me hierin al niet lukt is het doorgeven van de parameters. Bijvoorbeeld sp_Rule1 ziet er als volgt uit:
CREATE PROCEDURE dbo.sp_Rule1
@row_id varchar(10)
as
begin
SELECT count(*) FROM Table1 Where (Table1.ID = @row_id) AND (Table2.Type = 1);
end
GO
Oftewel, @row_id moet worden meegegeven aan sp_Rule1. De waarde hiervan is gelijk aan het record dat in de tabel wordt geupdated. Hoe doe je dit???
Daarna heb ik nog een tweede probleem .. oh nee.. uitdaging
Er moet een soort if-statement om ieder 'execute sp_Rule_x' procedure heen. Afhankelijk van het resultaat van de sp, wil ik graag nog een veldje updaten in dezelfde tabel met daarin een tekstberichtje (als toelichting op de statuscode).
Wat ik vind op het web is dat de inhoud van de stored procedures gelijk in de triggers worden geschreven. Niet alleen wordt de triggercode dan erg groot, maar ik vind het juist wel netjes gescheiden zo. Maar als het niet mogelijk is op deze manier dan hoor ik dat ook graag...
P.S. ik word helemaal gestoord van die verschillende SQL-dialecten!!!
Ik heb een aantal stored procedures geschreven die ieder 'iets' uit de database controleren.
Ik wil deze sp's aanroepen via een trigger op het moment dat er een wijziging in een tabel plaatsvindt. Ik gebruik sql server 2000. De trigger activeert dan de stored procedures en afhankelijk van het resultaat hiervan wil ik één veld in dezelfde tabel updaten met een statuscode.
Volgens mij moet de opbouw van de trigger er zo uitzien:
CREATE TRIGGER MyTrigger ON [dbo].[TService]
after insert, update
AS
declare @row_id varchar(4), @owner_type varchar(10)
execute sp_Rule1(@row_id);
execute sp_Rule2;
/* etc, nog een paar sp's */
Wat me hierin al niet lukt is het doorgeven van de parameters. Bijvoorbeeld sp_Rule1 ziet er als volgt uit:
CREATE PROCEDURE dbo.sp_Rule1
@row_id varchar(10)
as
begin
SELECT count(*) FROM Table1 Where (Table1.ID = @row_id) AND (Table2.Type = 1);
end
GO
Oftewel, @row_id moet worden meegegeven aan sp_Rule1. De waarde hiervan is gelijk aan het record dat in de tabel wordt geupdated. Hoe doe je dit???
Daarna heb ik nog een tweede probleem .. oh nee.. uitdaging
Er moet een soort if-statement om ieder 'execute sp_Rule_x' procedure heen. Afhankelijk van het resultaat van de sp, wil ik graag nog een veldje updaten in dezelfde tabel met daarin een tekstberichtje (als toelichting op de statuscode).
Wat ik vind op het web is dat de inhoud van de stored procedures gelijk in de triggers worden geschreven. Niet alleen wordt de triggercode dan erg groot, maar ik vind het juist wel netjes gescheiden zo. Maar als het niet mogelijk is op deze manier dan hoor ik dat ook graag...
P.S. ik word helemaal gestoord van die verschillende SQL-dialecten!!!