添加一条或多条记录后,如何设置一字段的值

luo_jian_dong 2004-10-16 09:59:19

假设有一表
a(id,mydate,name)
如何在触发器的after insert 中写,(mydate 是时间类型)
让mydate 的值为系统时间

CREATE TRIGGER Imytrigger ON a
AFTER INSERT
AS
update a set mydate=GETDATE() from inserted
where a.ID=inserted.ID
go

我这样写,不对呀!!!!!!!!!!

注意:多条记录一同插入
...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smalldeer 2004-10-19
  • 打赏
  • 举报
回复
smalldeer(晓露) 的写法肯定在执行一次的时候没有问题,但是当多条的时候就出问题了,多条的时候

------------------------------------
insert into t_a(id,name) select 1,'aa'
union select 2,'bb'

这样不是多条执行的例子吗?
heibai520 2004-10-18
  • 打赏
  • 举报
回复
如果一定要的话就加上游标吧!
kookboy 2004-10-18
  • 打赏
  • 举报
回复
用默认值好了,这种不需要用什么tigger吧,
lshuy2001 2004-10-18
  • 打赏
  • 举报
回复
smalldeer(晓露) 的写法肯定在执行一次的时候没有问题,但是当多条的时候就出问题了,多条的时候
应该用一个循环来更新值,可以使用游标或者其他的方式
luo_jian_dong 2004-10-16
  • 打赏
  • 举报
回复
我用
smalldeer(晓露) ( ) 信誉:100
的方法,还是有错!!1
是不是我的SQL SERVER2000 是开发版的原因那?
yesterday2000 2004-10-16
  • 打赏
  • 举报
回复
在企业管理器里把mydate值的默认值设为getdate()
smalldeer 2004-10-16
  • 打赏
  • 举报
回复
create table t_a(
id int,
mydate datetime,
name varchar(50)
)
go

CREATE TRIGGER Imytrigger ON t_a
AFTER INSERT
AS
update t_a set mydate=GETDATE() from inserted,t_a
where t_a.ID=inserted.ID
go

insert into t_a(id,name) select 1,'aa'
union select 2,'bb'

select * from t_a
victorycyz 2004-10-16
  • 打赏
  • 举报
回复
给该字段添上getdate()的默认值即可。不用写触发器的。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧