天天看點

oracle建立列預設值,使用函數作為Oracle11g中列的預設值

我們正在測試Oracle的工作,并負責在Oracle上建構所有資料庫對象(表,過程,觸發器等),我們目前使用的是Microsoft SQL Server 2008 R2。我們幾乎為所有ID列使用uniqueidentifier。我用這個函數來建立GUID:

CREATE OR REPLACE FUNCTION NEWID RETURN CHAR IS guid CHAR(36) ;

BEGIN

SELECT SYS_GUID() INTO guid FROM DUAL;

guid :=

SUBSTR(guid, 1, 8) ||

'-' || SUBSTR(guid, 9, 4) ||

'-' || SUBSTR(guid, 13, 4) ||

'-' || SUBSTR(guid, 17, 4) ||

'-' || SUBSTR(guid, 21);

RETURN guid;

END NEWID;

/

但是現在我無法弄清楚如何在建立表時将它用作列的預設值。這是一個不起作用的例子:

CREATE TABLE "NonWorkingExample"

(

"ID" CHAR(36) NOT NULL DEFAULT NEWID(),

"UnitNumber" NUMBER(38) NOT NULL,

"StartDateTime" TIMESTAMP NOT NULL,

"EndDateTime" TIMESTAMP NULL,

CONSTRAINT PK_RentalAgreements PRIMARY KEY ("ID")

);

錯誤:

Error starting at line 1 in command:

CREATE TABLE "NonWorkingExample"

(

"ID" CHAR(36) NOT NULL DEFAULT NEWID(),

"UnitNumber" NUMBER(38) NOT NULL,

"StartDateTime" TIMESTAMP NOT NULL,

"EndDateTime" TIMESTAMP NULL,

CONSTRAINT PK_RentalAgreements PRIMARY KEY ("ID")

)

Error at Command Line:3 Column:58

Error report:

SQL Error: ORA-00907: missing right parenthesis

00907. 00000 - "missing right parenthesis"

*Cause:

*Action:

非常感謝任何幫助。謝謝。