2010-10-06 50 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函數。

相關問題