sql当前日期约束

时间:2014-08-19 17:23:21

标签: sql sql-server sql-server-2008 sql-server-2012

我需要在数据库中的一个表中添加一个约束。表名是Experience。并且有一个名为ToDate的列。每次select语句执行如下。

select ToDate from Experience

它应该返回当前日期。

因此,每次执行select语句时,ToDate列都会以当前日期更新。

我知道我可以使用某种类型的sql触发器执行此操作,但是有一种方法可以通过sql约束来实现。

alter table add constraint...

任何帮助将不胜感激。

由于

4 个答案:

答案 0 :(得分:6)

您可以使用computed column。这个指定类似于colname as <expression>

create table t1(id int, dt as getdate());
insert t1 values (1);
select * from t1;

答案 1 :(得分:1)

添加约束......

create table tbl (id int identity, dt datetime, colval varchar(10))


ALTER TABLE dbo.tbl
ADD CONSTRAINT col_dt_def
DEFAULT GETDATE() FOR dt;

插入表格的示例..

insert into dbo.tbl(colval)
select 'somevalue'

select * from dbo.tbl

结果将是......

id  dt  colval
1   2014-08-19 13:31:57.577 somevalue

答案 2 :(得分:1)

您不能使用约束,因为约束基本上是关于表格中可以包含的内容,表格如何与其他表格相关等的规则。一旦进入表格,它与表格中的数据无关。现在,如果我正确理解您,您希望在选择该列时更新​​ToDate列。现在,您无法按照提及herehere使用触发器。他们建议您使用update后跟insert的存储过程。如果你必须重复使用它,这可能是我首选的SQL方法,你似乎必须这样做。虽然Andomar的答案可能更好。

答案 3 :(得分:0)

试试这个链接代码make help full

http://www.sqlatoms.com/queries/how-to-use-the-getdate-function-in-sql-server-3/

CREATE TABLE ProductOrders
(
  OrderId int NOT NULL PRIMARY KEY IDENTITY,
  ProductName nvarchar(50) NOT NULL,
  OrderDate datetime NOT NULL DEFAULT GETDATE()
)