请教:编写触发器碰到的一个问题。
我想在db_user表里插入usernmae,userpassword,useremail的同时,在db_user1里也插入相应的值。
现在碰到的问题是,比如我在db_user里三个字段里分别插入'aaaa','bbbbbbbb','ccccc',
但是在db_user1表的三个字段却相映为'a','b','c',数据只有一个字符。
求教。
代码如下:
CREATE TRIGGER db_user_insert ON db_user
FOR INSERT
AS
DECLARE @username nvarchar,@userpassword nvarchar,@useremail nvarchar
SELECT @username=username,@userpassword=userpassword,@useremail=useremail FROM inserted
IF @@rowcount>0
BEGIN
INSERT INTO db_user1(username,userpassword,useremail)
VALUES(@username,@userpassword,@useremail)
END
问题点数:20、回复次数:6Top
1 楼xiaonvjing(飞扬)回复于 2005-07-02 18:49:38 得分 0
改动一下,试一下吧!!
CREATE TRIGGER db_user_insert ON db_user
FOR INSERT
AS
INSERT INTO db_user1(username,userpassword,useremail)
select (select username from inserted),(select userpassword from inserted),
(select useremail from inserted) from insertedTop
2 楼xiaonvjing(飞扬)回复于 2005-07-02 18:49:56 得分 0
改动一下,试一下吧!!
CREATE TRIGGER db_user_insert ON db_user
FOR INSERT
AS
INSERT INTO db_user1(username,userpassword,useremail)
select (select username from inserted),(select userpassword from inserted),
(select useremail from inserted) from insertedTop
3 楼paoluo(一天到晚游泳的鱼)回复于 2005-07-02 18:59:59 得分 0
楼上写的是错误的。
CREATE TRIGGER db_user_insert ON db_user
FOR INSERT
AS
INSERT INTO db_user1(username,userpassword,useremail)
select username ,userpassword,useremail from inserted
GOTop
4 楼paoluo(一天到晚游泳的鱼)回复于 2005-07-02 19:02:45 得分 10
你的触发器只得到一个字符的原因是nvarchar没有定义长度,系统会默认长度为1。
另外,不建议写触发器时像你这么写。
你这么写的话,一次插入多条数据就会出问题。
Top
5 楼vivianfdlpw()回复于 2005-07-02 19:12:30 得分 10
DECLARE @username nvarchar,@userpassword nvarchar,@useremail nvarchar
===========>
DECLARE @username nvarchar(20),@userpassword nvarchar(20),@useremail nvarchar(20)
不声明长度的话会截掉的Top
6 楼jonick(马桶男)回复于 2005-07-02 19:49:50 得分 0
谢谢xiaonvjing(飞扬),paoluo(一天到晚游泳的鱼) ,vivianfdlpw
由于分只有20分,所以给了paoluo(一天到晚游泳的鱼) ,vivianfdlpw一人十分。
谢了:)Top




