Je veux que ce déclencheur soit déclenché après une insertion avec le texte married
sur le marital_status
colonne, c'est ce que j'ai jusqu'à présent
ALTER TRIGGER [dbo].[marriage]
ON [dbo].[applicant_personal_info]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF (SELECT [marital_status] FROM inserted) = 'married'
BEGIN
INSERT INTO [dbo].[applicant_marriage_info]([dom])
VALUES('abc')
END
END
Le problème que vous rencontrerez ici vient du fait que SQL Server n'a pas les déclencheurs "POUR CHAQUE RANG" qu'Oracle possède. Vous devez écrire vos déclencheurs pour gérer les modifications sur plusieurs lignes, c'est-à-dire que les tables virtuelles INSÉRÉES ou SUPPRIMÉES peuvent contenir plus d'une ligne.
Si une telle mise à jour devait se produire, votre déclencheur échouerait, car (SELECT [marital_status] FROM inserted)
renverrait plusieurs lignes, et les sous-requêtes doivent renvoyer une seule valeur pour être utilisées dans une comparaison directe.
Le déclencheur devrait probablement ressembler à ceci:
CREATE TRIGGER [dbo].[marriage] ON [dbo].[applicant_personal_info] FOR INSERT
AS
BEGIN
SET NOCOUNT ON
IF EXISTS (SELECT [marital_status] FROM INSERTED WHERE marital_status = 'married')
BEGIN
INSERT INTO [dbo].[applicant_marriage_info] ([dom])
SELECT
'abc' --Replace with whatever you're really inserting
FROM INSERTED
WHERE marital_status = 'married'
END
END
Ce déclencheur est donc assez proche de ce dont vous avez besoin. Maintenant, le problème ici est qu'une seule ligne sera insérée dans candidate_marriage_info s'il y a des lignes insérées. Est-ce vraiment ce que vous voulez? Que se passe-t-il s'il y a plusieurs lignes insérées à la fois?
ALTER TRIGGER [dbo].[marriage]
ON [dbo].[applicant_personal_info]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO [dbo].[applicant_marriage_info]([dom])
SELECT 'abc'
FROM inserted
WHERE marital_status = 'married'
END
Vous aurez probablement besoin de plus de colonnes que ce que j'ai montré.