sql server programming:
1) This will affect two tables. Account and Treatment.
2) Trigger is on Account for update and insert
3) After insert or update in Account an insert will be there in
Treatment.
4) the PK or newly inserted Treatment row will be updated in Account
table. (Account table has FK for Treatment).
5) Here the result is After insert or update on Account a
corresponding insert happens in Treatment Table but the problem is
that ...Account Table's FK is not getting updated.
Here is my Trigger. Pls help. This is not a specific case and u can
tell me any simple example. For security reason I cant post Table
scripts.
Thanx a lot.
-Manish
If Exists ( SELECT name
FROM sysobjects
WHERE name = 'I_ACCOUNT_DEFAULT_METHD'
AND type = 'TR')
DROP TRIGGER I_ACCOUNT_DEFAULT_METHD
/
CREATE TRIGGER I_ACCOUNT_DEFAULT_METHD ON ACCOUNT AFTER INSERT,
UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE
@column_acc_value$1 NUMERIC(15),
@column_new_value$1 FLOAT,
@column_treatment_schedule_id NUMERIC(15)
DECLARE ForEachInsertedRowTriggerCursor CURSOR LOCAL FORWARD_ONLY
READ_ONLY FOR
SELECT ACCOUNT_ID, EXT_NUMBER_17, TREATMENT_SCHEDULE_ID FROM
inserted
OPEN ForEachInsertedRowTriggerCursor
FETCH NEXT FROM ForEachInsertedRowTriggerCursor INTO @column_acc_value
$1, @column_new_value$1, @column_treatment_schedule_id
WHILE @@fetch_status = 0
BEGIN
DECLARE @var_treatment_schedule_id NUMERIC(15)
DECLARE @var_primary_contact_method NVARCHAR(10)
DECLARE @old_primary_contact_method NVARCHAR(10)
IF @column_new_value$1 IS NOT NULL
BEGIN
IF @column_new_value$1 = 1
BEGIN
SELECT @var_primary_contact_method = 'Email'
END
IF @column_new_value$1 = 2
BEGIN
SELECT @var_primary_contact_method = 'Fax'
END
IF @column_new_value$1 = 3
BEGIN
SELECT @var_primary_contact_method = 'Phone'
END
IF @column_new_value$1 = 4
BEGIN
SELECT @var_primary_contact_method = 'PrintFile'
END
IF @column_treatment_schedule_id IS NULL
BEGIN
Exec IdGeneratorSeq @var_treatment_schedule_id OUTPUT
INSERT INTO TREATMENT_SCHEDULE
(TREATMENT_SCHEDULE_ID ,
SUPPRESS_ALL ,
SEND_AUTO_BILLING_STMT ,
PRIMARY_CONTACT_METHOD ,
UPDATE_DATE ,
UPDATE_SEQUENCE )
VALUES (@var_treatment_schedule_id ,
'N' ,
'N' ,
@var_primary_contact_method ,
GETDATE() ,
1
)
UPDATE ACCOUNT
SET TREATMENT_SCHEDULE_ID = @column_treatment_schedule_id,
UPDATE_SEQUENCE = UPDATE_SEQUENCE + 1,
UPDATE_DATE = GETDATE()
WHERE ACCOUNT_ID = @column_acc_value$1
END
ELSE
BEGIN
SELECT @old_primary_contact_method = PRIMARY_CONTACT_METHOD
FROM TREATMENT_SCHEDULE
WHERE TREATMENT_SCHEDULE_ID = @column_treatment_schedule_id
END
IF @old_primary_contact_method != @var_primary_contact_method
BEGIN
UPDATE TREATMENT_SCHEDULE
SET PRIMARY_CONTACT_METHOD = @var_primary_contact_method,
UPDATE_SEQUENCE = UPDATE_SEQUENCE + 1,
UPDATE_DATE = GETDATE()
WHERE TREATMENT_SCHEDULE_ID = @column_treatment_schedule_id
END
END
FETCH NEXT FROM ForEachInsertedRowTriggerCursor INTO
@column_acc_value$1, @column_new_value$1,
@column_treatment_schedule_id
END
CLOSE ForEachInsertedRowTriggerCursor
DEALLOCATE ForEachInsertedRowTriggerCursor
END
/