• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

简单触发器的问题,高手指点!

jzinfo 2008-03-14 12:22:47
当将物料表(basic_material)的价格字段更新后,将更新的价格及相关信息自动插入到价格变更表(price_log)中

我写的触发器如下:


CREATE trigger price_update
on basic_material
for update as
if (columns_updated()&32)>0 /*第6列被更新,即价格列*/
begin
insert into price_log(material_id,price,changedate)
select ins.material_id,ins.unitprice,getdate()
from inserted as ins
end



现在有两个问题,price_log的字段如下:
id mateial_id price changedate

其中 id为自动编号.

现在提示使用如上触发器时候,提示不能将null值插入到id列..
那怎么在触发器中针对自动编号的字段插入呢?

其二,getdate()得到的日期是包括时分秒 的
我只需要年月日,怎么处理??
...全文
27 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dawugui 2008-03-14
create table ta(id int)
insert into ta values(1)
insert into ta values(2)
create table tb(id int identity , dt datetime)
go

create trigger my_trig on ta for update
as
insert into tb values(convert(varchar(10),getdate(),120))
go

update ta set id = 10 where id = 1
update ta set id = 20 where id = 2

select * from tb

drop table ta,tb

/*
id dt
----------- ------------------------------------------------------
1 2008-03-14 00:00:00.000
2 2008-03-14 00:00:00.000

(所影响的行数为 2 行)
*/
回复
dawugui 2008-03-14
其二,getdate()得到的日期是包括时分秒 的
我只需要年月日,怎么处理??

把getdate()换为 convert(varchar(10),getdate(),120)
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-14 12:22
社区公告
暂无公告