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

时间:2014-10-29 04:06:15

标签: c# sql sql-server

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

C#表格 - > tableA(通过存储过程)

我想要实现的目标:

C#表格 - > tableA - > tableB的

从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'。

提前致谢。

1 个答案:

答案 0 :(得分:1)

正如在有关问题的评论中所提到的,将插入放入已经调用的存储过程中的事务中可能更好,但是如果必须执行触发器,那么它应该是什么样子。请注意特定名称,然后从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