sql优化:从设计表结构开始(SQL Server中如何让数据库中某一个字段随时间自动更新?)

时间:2022-12-29 14:39:05

今天在sql server论坛看到一个帖子:如何让数据库中某一个字段随时间自动更新?

那么如何来实现呢?

可以用触发器,那么先要写个触发器,但是可能会影响性能。

想了想,其实用sql server提供的 计算列,就可以轻松实现这个需求。


例子如下:

员工表,有字段:人员id,姓名,人员编码,人员入职时间,现在希望要增加一个字段显示工龄,就是在公司工作的时间,如 1.5年。

if object_id('emp') is not null
drop table emp
go


CREATE TABLE emp
(
emp_id INT PRIMARY KEY ,
emp_name NVARCHAR(10) not null,
emp_code VARCHAR(20) not null,
hire_date DATE not null
);
go


INSERT INTO emp
VALUES ( 1, N'张三', '0000000100', '2015-01-01' );

实现方法就是新增一个计算列:

alter table emp
add employment_time as cast(datediff(month,hire_date,GETDATE())*1.0/12 as numeric(8,1));

select * from emp;
查询结果:

sql优化:从设计表结构开始(SQL Server中如何让数据库中某一个字段随时间自动更新?)
何让数据库中某一个字段随时间自动更新