Sql 是否在表中创建自动生成的时间戳列?

Sql 是否在表中创建自动生成的时间戳列?,sql,sql-server,tsql,Sql,Sql Server,Tsql,如何在Microsoft SQL Server 2019中的表中创建自动生成的时间戳列?插入或更新表时,应自动生成时间戳列 在IBM Db2数据库中,语法如下所示: create table myschema.mytable(col1 int,col2 timestamp not null)在更新时始终为每一行生成行更改时间戳 在myschema.mytable(col1)中插入值(1) 更新myschema.mytable集合col1=2 在列col1的insert/update之后,列co

如何在Microsoft SQL Server 2019中的表中创建自动生成的时间戳列?插入或更新表时,应自动生成时间戳列

在IBM Db2数据库中,语法如下所示:

create table myschema.mytable(col1 int,col2 timestamp not null)在更新时始终为每一行生成行更改时间戳
在myschema.mytable(col1)中插入值(1)
更新myschema.mytable集合col1=2

在列
col1
insert
/
update
之后,列
col2
将自动生成为当前时间戳。

在Microsoft SQL Server中,您可以尝试以下代码:

创建表myschema.mytable
(
col1 int,
col2 datetime not null默认值(当前时间戳)
)
在myschema.mytable(col1)中插入值(1)
更新myschema.mytable集合col1=2
从myschema.mytable中选择*
更新: 让我们为测试创建临时表

DECLARE@mytable表
(
col1 int,
col2 datetime not null默认值(当前时间戳)
)
插入@mytable(col1)值(1)
从@mytable中选择*
更新@mytable SET col1=2
从@mytable中选择*

在Microsoft SQL Server中,您可以尝试以下代码:

创建表myschema.mytable
(
col1 int,
col2 datetime not null默认值(当前时间戳)
)
在myschema.mytable(col1)中插入值(1)
更新myschema.mytable集合col1=2
从myschema.mytable中选择*
更新: 让我们为测试创建临时表

DECLARE@mytable表
(
col1 int,
col2 datetime not null默认值(当前时间戳)
)
插入@mytable(col1)值(1)
从@mytable中选择*
更新@mytable SET col1=2
从@mytable中选择*


假设时间戳指的是当前日期时间,那么
mycolumn datetime非空默认值(当前时间戳)
如果您指的是版本字段,则该字段会在每一行更改时更新,但如果您需要实际日期时间列(与
行版本相对),则不代表实际日期您需要触发器,或者通过添加触发器的SP运行更新。除了
rowversion
,没有其他自动方法。我需要更新时间戳列(MS-SQL语言中的日期时间)也是在每次更新语句之后。我知道我可以编写触发器,但如果可能的话,我想避免额外的复杂性。对不起,没有自动方式-触发器或SP。假设时间戳是指当前日期时间,那么
mycolumn datetime非空默认值(当前\u时间戳)
如果您指的是版本字段,请查看该字段,它会在每行更改时更新,但如果您需要实际日期时间列(与
行版本相反),则不代表实际日期您需要触发器,或者通过添加触发器的SP运行更新。除了
rowversion
,没有其他自动方法。我需要更新时间戳列(MS-SQL语言中的日期时间)也是在每次更新语句之后。我知道我可以编写触发器,但如果可能的话,我希望避免额外的复杂性。对不起,没有自动方式-触发器或SP。@DaleK不想在您的回答中指定您的注释,对不起!我希望我没有冒犯您。我应该怎么做?请记住默认值不会在
更新时更新问题中要求的是,OP希望时间戳列在更新时更新(以及插入)。是的,为什么我将@DaleK的版本复制到我的答案中。
当前的\u时间戳
是ANSI,与问题中的相同。@timnavigate,在您的示例中,col2时间戳字段仅在插入后生成,但我还需要在每次更新时更改col2时间戳字段。为简化每次插入或更新的时间戳,应更改col2列。@DaleK不想在您的答案中指定您的评论,抱歉!我希望我没有冒犯您。我该怎么办?请记住问题中要求的默认值“更新时不更新”
“是”,OP希望时间戳列在更新时更新(以及插入)。是的,为什么我将@DaleK的版本复制到我的答案中。
current_timestamp
是ANSI,与问题中的相同。@timnavigate,在您的示例中,col2 timestamp字段仅在插入后生成,但我还需要在每次更新时更改col2 timestamp字段。为简化每次插入或更新的时间戳,应更改col2列。