Sql server SQL Server:触发器仅影响1行
sql-servertriggers
Sql server SQL Server:触发器仅影响1行,sql-server,triggers,Sql Server,Triggers,我有一个从外部JSON获取数据并将其解析到表中的过程,该过程工作得非常好。现在,我尝试创建一个触发器,以便在添加数据集时,触发器将数据分离到适当的表和列中CREATE TRIGGER main.afterParsing ON main.jsontableAFTER INSERTASBEGIN--Country VariablesDECLARE @CountryCountry NVARCHAR(50)--Person VariablesDECLA
我有一个从外部JSON获取数据并将其解析到表中的过程,该过程工作得非常好。现在,我尝试创建一个触发器Mssq触发器,以便在添加数据集时,触发器将数据分离到适当的表和列中
CREATE TRIGGER main.afterParsing
ON main.jsontable
AFTER INSERT
AS
BEGIN
--Country Variables
DECLARE @CountryCountry NVARCHAR(50)
--Person Variables
DECLARE @PersonName NVARCHAR(50)
DECLARE @PersonSurname NVARCHAR(50)
DECLARE @PersonEmail NVARCHAR(50)
DECLARE @PersonAge NVARCHAR(50)
DECLARE @PersonCountry NVARCHAR(50)
DECLARE @PersonRegistered NVARCHAR(50)
--Get Country
SELECT @CountryCountry = jsontable.country FROM inserted jsontable;
--Insert Country
INSERT INTO country(countryName)
SELECT @CountryCountry
WHERE @CountryCountry NOT IN (Select CountryName FROM Country)
END;
这是触发器,但出于某种原因,它只更新一行。我做错了什么?
默认情况下,批量语句不执行触发器。但是,可以使用FIRE_触发器限定符启用触发器:
下面是触发器的更新代码
GO
CREATE TRIGGER main.afterParsing ON main.jsontable
AFTER INSERT
AS
BEGIN
--Country Variables
DECLARE @CountryCountry NVARCHAR(50)
--Person Variables
DECLARE @PersonName NVARCHAR(50)
DECLARE @PersonSurname NVARCHAR(50)
DECLARE @PersonEmail NVARCHAR(50)
DECLARE @PersonAge NVARCHAR(50)
DECLARE @PersonCountry NVARCHAR(50)
DECLARE @PersonRegistered NVARCHAR(50)
--Get Country
SELECT @CountryCountry = jsontable.country FROM inserted jsontable;
IF NOT EXISTS (Select CountryName FROM Country WHERE CountryName=@CountryCountry)
BEGIN
--Insert Country
INSERT INTO country(countryName)
VALUES (@CountryCountry)
END
END;
GO
@CountryCountry是持有单个国家还是多个国家?它应该持有单个国家。它给了我一个单一的国家,但我如何让它在触发器中从一排转到另一排呢?因为它只考虑第1行的国家/地区,所以触发器应该是批处理的。您在源表中进行批量插入吗?是的,我正在使用BulkColumn获取JSON文件的信息。它仍然只影响1行
(编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|