与存储过程和触发器的表关系

本文关键字:关系 触发器 存储过程 | 更新日期: 2023-09-27 18:28:08

为了简单起见,我有这个:

C#表单-->表A(通过存储过程)

我正在努力实现的目标:

C#表格-->表格A-->表格B-

从C#表单发送到表A的信息。从表A我想将相关列发送到表B

TableA (ProfileID) = Table B (UserID)

因此,我在我的存储过程中创建了一个触发器,该触发器与c#表单相连:

ALTER TRIGGER IDs
ON  dbo.UserProfile
FOR INSERT
AS
   DECLARE @ProfileID int
   SELECT 
        ProfileID
   FROM
        dbo.UserProfile
   INSERT INTO  dbo.Users(Users.UserID)
   VALUES(@ProfileID)
GO

但是当我的存储过程从C#表单执行时,我会得到一个错误:

列名"UserID"无效。

提前谢谢。

与存储过程和触发器的表关系

正如问题评论中所提到的,最好将插入插入到已经调用的存储过程中的事务中,但如果必须执行触发器,这就是它应该是什么样子。请注意具体的名称,然后从INSERTED表中插入。

ALTER TRIGGER UserProfile_CreateUser
ON  dbo.UserProfile
FOR INSERT
AS
BEGIN
    INSERT dbo.Users (UserID)
        SELECT ProfileID
        FROM INSERTED
END
GO

有关虚拟表的详细信息:http://msdn.microsoft.com/en-us/library/ms191300.aspx