我需要在数据库中的一个表中添加一个约束。表名是Experience。并且有一个名为ToDate的列。每次select语句执行如下。
select ToDate from Experience
它应该返回当前日期。
因此,每次执行select语句时,ToDate列都会以当前日期更新。
我知道我可以使用某种类型的sql触发器执行此操作,但是有一种方法可以通过sql约束来实现。
像
alter table add constraint...
任何帮助将不胜感激。
由于
答案 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
列。现在,您无法按照提及here和here使用触发器。他们建议您使用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()
)