【发布时间】:2011-04-21 22:14:17
【问题描述】:
我有一个 sybase 15 数据库,对于我的一个表,我想将一列默认设置为行插入的当前日期/时间。这可能吗?
在 sybase 文本中,如下所述:
ALTER TABLE sales_order
MODIFY order_date DEFAULT CURRENT DATE
在我的数据库中,这没有任何作用,因为 CURRENT DATE 无法识别。
【问题讨论】:
我有一个 sybase 15 数据库,对于我的一个表,我想将一列默认设置为行插入的当前日期/时间。这可能吗?
在 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
)
【讨论】:
...DEFAULT GETDATE() 是正确的。案件无关;混合大小写可能表示 Java 方法,但它是直接的 TSQL 函数。如果您需要进一步的帮助,请发布确切的错误消息。
另外,ALTER TABLE 方法为 future INSERTS 设置默认值;如果您希望更改现有数据,则需要 UPDATE(适用于小型表)或卸载/重新加载表(适用于大型表)。
注意 NULL/NOT NULL:你不想在不理解的情况下改变它。同样,现有/未来的问题需要解决。 NOT NULL 防止 NULL 作为 INSERT VALUE 显式传递。
【讨论】:
CURRENT_DATE 是一个未被普遍采用的 SQL 标准。 如其他地方所述,应改为使用 getdate() T-SQL 函数。
【讨论】: