2010-10-06 88 views

回答

3

尝试(),而不是

+0

它说默认情况下我需要一个常量,常量表达式或变量。 – jonjonjonjuice 2010-10-06 16:53:48

+0

这是令人惊讶的,我很确定我用它(用于表定义),就像这里写的http://vista.intersystems.com/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_getdate除非你是不使用Sybase ASE? – 2010-10-06 20:23:52

7

使用getDate()是一个有效的解决方案,你必须有一个语法错误。试试像这样:

create table test_tbl (
    date_data DATETIME default getDate() NOT NULL 
) 
+0

这不能满足“行插入的当前日期/时间”。它会更新该行被修改的日期,如文档[这里](http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00170.1540/doc/html/san1288042837002 .html):“只要更新行,值就会随当前日期和时间更新。” – 2014-05-09 18:52:00

+0

值得注意的是(与Sql Server不同)列规范各部分的顺序很重要:“date_data DATETIME default getDate()NOT NULL”是有效的;而“date_data DATETIME NOT NULL默认getDate()”不是。 – Badgerspot 2014-12-12 10:14:33

2

... DEFAULT GETDATE()是正确的。案件无关紧要;混合大小写可能表示Java方法,但它是一个直接的TSQL函数。如果您需要进一步的帮助,请发布确切的错误消息。

此外,ALTER TABLE方法设置默认为未来 INSERTS;如果你想改变现有的数据,你需要更新(适用于小型表格)或卸载/重新加载表格(大型需求)。

注意NULL/NOT NULL:你不想在没有理解的情况下改变它。再次,现有的/未来的问题需要解决。 NOT NULL防止NULL作为INSERT VALUE显式传递。

+0

但是,如何让它不像更新“当前”关键字那样更新更新日期呢? – 2014-05-09 18:55:11

1

CURRENT_DATE是未被普遍采用的SQL标准。 正如别处所述,应该使用getdate()T-SQL函数。

相关问题