FastEddie___
asked on
Getting Trigger Happy with SQL Server 2000
I am creating an insert trigger in SQL Server 2000 that works if I insert a new user through the query analyzer but when a new user is created through the web app I get a Foreign Key constraint error. I'm new to triggers so I'm hoping the fix will be straightfoward or maybe something I overlooked.
Is there a way to create a trigger that fires after an insert is executed so it won't interfear with the constaints?
Here is my table structure:
table: APPUSERS (tie between a particular app in this case the fifth one and the user id when on that app)
AU_ID, AU_APP_ID, AU_USER_ID,
----- ------------- -----------
466 5 635
467 5 659
856 5 1117
Here is the trigger:
CREATE trigger trig_INSERT_AppUsers
on dbo.appusers
for insert
AS
IF update (AU_ID)
BEGIN
DECLARE @appid as int
SELECT @appid = (SELECT AU_APP_ID FROM INSERTED)
IF (@appid = 5)
BEGIN
DECLARE @USR_RET_ID as int
SELECT @USR_RET_ID = (SELECT AU_ID FROM INSERTED)
INSERT INTO appuserprivs
(
AUP_AU_ID,
AUP_AP_ID,
AUP_Allowed,
AUP_CreatedDate,
AUP_CreatedBy
)
VALUES
(
@USR_RET_ID,
57,
0,
GetDate(),
0
)
END
END
Here is the error that is being thrown:
INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_AppUserRoles_AppUsers' .
The conflict occurred in database 'OConnordata', table 'AppUsers', column 'AU_ID'.
The problem is in creating new users. If I don't use the trigger, I can create one just fine but using the trigger causes the FK error.
I'm using coldfusion MX 7 on Windows OS and MS SQL Server 2000.
-Eddie
Is there a way to create a trigger that fires after an insert is executed so it won't interfear with the constaints?
Here is my table structure:
table: APPUSERS (tie between a particular app in this case the fifth one and the user id when on that app)
AU_ID, AU_APP_ID, AU_USER_ID,
----- ------------- -----------
466 5 635
467 5 659
856 5 1117
Here is the trigger:
CREATE trigger trig_INSERT_AppUsers
on dbo.appusers
for insert
AS
IF update (AU_ID)
BEGIN
DECLARE @appid as int
SELECT @appid = (SELECT AU_APP_ID FROM INSERTED)
IF (@appid = 5)
BEGIN
DECLARE @USR_RET_ID as int
SELECT @USR_RET_ID = (SELECT AU_ID FROM INSERTED)
INSERT INTO appuserprivs
(
AUP_AU_ID,
AUP_AP_ID,
AUP_Allowed,
AUP_CreatedDate,
AUP_CreatedBy
)
VALUES
(
@USR_RET_ID,
57,
0,
GetDate(),
0
)
END
END
Here is the error that is being thrown:
INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_AppUserRoles_AppUsers'
The conflict occurred in database 'OConnordata', table 'AppUsers', column 'AU_ID'.
The problem is in creating new users. If I don't use the trigger, I can create one just fine but using the trigger causes the FK error.
I'm using coldfusion MX 7 on Windows OS and MS SQL Server 2000.
-Eddie
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Sorry, I have just been too busy to get back to this for any folow-up / details.
ASKER
What I'm trying to do is when a colum gets updated. Check it to see if has the value of 5. If so then insert a record into another table.
Scott, what did you mean when you said I needed to change the trigger to handle multiple rows?
-Eddie