日期:2014-05-18  浏览次数:20417 次

☆☆☆求助!!!触发器异常,跨数据库插入数据时出现异常☆☆☆
CREATE   TRIGGER   TR_INSERT   ON   Asean_Member
FOR   INSERT
AS
DECLARE   @UserName       varchar(50)
DECLARE   @UserPasswd   varchar(50)
SELECT   @UserName=M_userid,@UserPasswd=M_Password   FROM   inserted
INSERT   INTO   A   (UserName,UserPassword)VALUES(@UserName,@UserPasswd)
查询插入的记录,读出用户名和密码然后插入数据到同一个数据库的A表,这个没问题


CREATE   TRIGGER   TR_INSERT   ON   Asean_Member
FOR   INSERT
AS
DECLARE   @UserName       varchar(50)
DECLARE   @UserPasswd   varchar(50)
SELECT   @UserName=M_userid,@UserPasswd=M_Password   FROM   inserted
INSERT   INTO   X.dbo.A   (UserName,UserPassword)VALUES(@UserName,@UserPasswd)
查询插入的记录,读出用户名和密码然后插入数据到同X数据库的A表,这个出现问题,页面在执行插入操作以后提示插入成功,但是实际上数据并未插入数据库,而且A表中也没有相应的用户名和密码

------解决方案--------------------
在查询分析器里执行下面语句记录会插入成功吗?

INSERT INTO X.dbo.A (UserName,UserPassword)
VALUES( 'user1 ', 'password1 ')

还有,你insert触发器的取记录的方法如果多条的话就会有问题.
------解决方案--------------------
--修改成这样.
CREATE TRIGGER TR_INSERT ON Asean_Member
FOR INSERT
AS
INSERT INTO X.dbo.A (UserName,UserPassword)
SELECT M_useridM_Password FROM inserted
------解决方案--------------------
alter TRIGGER TR_INSERT ON Asean_Member
FOR INSERT
AS
/*
DECLARE @UserName varchar(50)
DECLARE @UserPasswd varchar(50)
SELECT @UserName=M_userid,@UserPasswd=M_Password FROM inserted
*/
INSERT INTO X.dbo.A (UserName,UserPassword)VALUES( 'user111 ', 'password111 ')

把触发器修改成上面这样,页面在执行插入操作后看X.dbo.A中有没有user111这条记录.
不成功是不是X.dbo.A有主键重复或其它约束啊?


icoding(我编码我存在) ( ) 信誉:100 Blog 加为好友 2007-04-16 16:09:44 得分: 0

还有,你insert触发器的取记录的方法如果多条的话就会有问题.
---------------
我理解是每插入一条,inserted产生一条对应的数据,应该始终是一条记录吧?


-----------------------
不一定.
这要看你前台是发出什么样的插入语句决定,有可能为多条.