CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

请教:编写触发器碰到的一个问题。

楼主jonick(马桶男)2005-07-02 18:23:35 在 MS-SQL Server / 基础类 提问

我想在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

相关问题

  • 怎么编写触发器?
  • 编写简单触发器
  • 如何编写这个触发器
  • 触发器的编写,帮帮忙啊!
  • 如何编写这样的触发器
  • 求助触发器的编写
  • 请教高手,此触发器如何编写
  • 相同两张表的触发器编写 100分奉上
  • 如何编写触发器向另外一个数据库写数据
  • 在线等着,一解决就结贴:用触发器编写自动编号

关键词

  • db
  • useremail
  • userpassword
  • 触发器
  • insertasinsert
  • nvarchar
  • username
  • 插入
  • insert
  • 长度

得分解答快速导航

  • 帖主:jonick
  • paoluo
  • vivianfdlpw

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo