我有一个sybase 15数据库,并且对于我的一个表,我想使列默认为行插入的当前日期/时间。这可能吗?在sybase中创建一个列,默认为行插入的当前日期/时间
在Sybase文本,以下是说:
ALTER TABLE sales_order
MODIFY order_date DEFAULT CURRENT DATE
在我的数据库,这并不做任何事情,因为CURRENT DATE
无法识别。使用GETDATE
我有一个sybase 15数据库,并且对于我的一个表,我想使列默认为行插入的当前日期/时间。这可能吗?在sybase中创建一个列,默认为行插入的当前日期/时间
在Sybase文本,以下是说:
ALTER TABLE sales_order
MODIFY order_date DEFAULT CURRENT DATE
在我的数据库,这并不做任何事情,因为CURRENT DATE
无法识别。使用GETDATE
尝试(),而不是
使用getDate()
是一个有效的解决方案,你必须有一个语法错误。试试像这样:
create table test_tbl (
date_data DATETIME default getDate() NOT NULL
)
这不能满足“行插入的当前日期/时间”。它会更新该行被修改的日期,如文档[这里](http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00170.1540/doc/html/san1288042837002 .html):“只要更新行,值就会随当前日期和时间更新。” – 2014-05-09 18:52:00
值得注意的是(与Sql Server不同)列规范各部分的顺序很重要:“date_data DATETIME default getDate()NOT NULL”是有效的;而“date_data DATETIME NOT NULL默认getDate()”不是。 – Badgerspot 2014-12-12 10:14:33
... DEFAULT GETDATE()
是正确的。案件无关紧要;混合大小写可能表示Java方法,但它是一个直接的TSQL函数。如果您需要进一步的帮助,请发布确切的错误消息。
此外,ALTER TABLE方法设置默认为未来 INSERTS;如果你想改变现有的数据,你需要更新(适用于小型表格)或卸载/重新加载表格(大型需求)。
注意NULL/NOT NULL:你不想在没有理解的情况下改变它。再次,现有的/未来的问题需要解决。 NOT NULL防止NULL作为INSERT VALUE显式传递。
但是,如何让它不像更新“当前”关键字那样更新更新日期呢? – 2014-05-09 18:55:11
CURRENT_DATE是未被普遍采用的SQL标准。 正如别处所述,应该使用getdate()T-SQL函数。
它说默认情况下我需要一个常量,常量表达式或变量。 – jonjonjonjuice 2010-10-06 16:53:48
这是令人惊讶的,我很确定我用它(用于表定义),就像这里写的http://vista.intersystems.com/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_getdate除非你是不使用Sybase ASE? – 2010-10-06 20:23:52