【问题标题】:make a column in sybase default to the current date/time of row insertion使sybase中的列默认为行插入的当前日期/时间
【发布时间】:2011-04-21 22:14:17
【问题描述】:

我有一个 sybase 15 数据库,对于我的一个表,我想将一列默认设置为行插入的当前日期/时间。这可能吗?

在 sybase 文本中,如下所述:

ALTER TABLE sales_order
MODIFY order_date DEFAULT CURRENT DATE

在我的数据库中,这没有任何作用,因为 CURRENT DATE 无法识别。

【问题讨论】:

    标签: date default sybase


    【解决方案1】:

    尝试使用 getDate() 代替

    【讨论】:

    • 它说我需要一个常量、常量表达式或默认后的变量。
    • 这太令人惊讶了,我很确定我用过它(用于表定义),就像这里写的 vista.intersystems.com/csp/docbook/… 除非你没有使用 Sybase ASE?
    【解决方案2】:

    使用getDate() 是一个有效的解决方案,您一定遇到了语法错误。试试这样:

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

    【讨论】:

    • 这不能满足“行插入的当前日期/时间”。它将更新行被修改的日期,如 Sybase IQ 中记录的 here:“每当更新行时,都会使用当前日期和时间更新值。”
    • 值得注意的是(与Sql Server不同)列规范部分的顺序很重要:“date_data DATETIME default getDate() NOT NULL”有效;而“date_data DATETIME NOT NULL default getDate()”不是。
    【解决方案3】:

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

    另外,ALTER TABLE 方法为 future INSERTS 设置默认值;如果您希望更改现有数据,则需要 UPDATE(适用于小型表)或卸载/重新加载表(适用于大型表)。

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

    【讨论】:

    • 但是你如何让它不像使用“current”关键字那样更新更新日期?
    【解决方案4】:

    CURRENT_DATE 是一个未被普遍采用的 SQL 标准。 如其他地方所述,应改为使用 getdate() T-SQL 函数。

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 2011-08-08
      • 2021-07-08
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2011-05-26
      相关资源
      最近更新 更多