【发布时间】:2015-03-31 13:54:50
【问题描述】:
我正在使用 2 个表:
- WPCMA69_连接器
- WPCMA70_ConnectorPocket
由于关系属性具有“更新”和“删除”级联,我正在开发一个触发器来处理插入。 ConnectorName 是我想在 PCMA69 上执行插入命令后自动从 PCMA69 表插入到 PCMA70 表的公共字段。
-
PCMA69_ConnectorName_N
- (PK,nvarchar(50,not null)
-
PCMA70_ConnectorName_N
- (FK,nvarchar(50),not null)
这是我尝试过的:
alter trigger trigConnector
ON dbo.WPCMA69_Connector
FOR INSERT
AS
BEGIN
SET NOCOUNT ON
DECLARE @ConnectorName nvarchar(50)
SELECT @Connectorname = PCMA69_ConnectorName_N
FROM inserted
INSERT INTO WPCMA70_ConnectorPocket
VALUES (@ConnectorName)
END
但是,我得到了错误:
消息 213,级别 16,状态 1,过程 trigConnector,第 9 行
列名或提供的值的数量与表定义不匹配。
【问题讨论】:
-
您的错误是因为您没有为插入指定列。但是,您的触发器有一个重大缺陷。您正在使用标量变量,这表明它无法处理多行操作。您需要在触发器中创建基于集合的查询。
标签: sql-server triggers insert