我们正在测试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:

非常感谢任何帮助。谢谢。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐