在 Oracle SQL 中创建默认约束

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3443360/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-18 21:12:46  来源:igfitidea点击:

Create Default Constraint in Oracle SQL

sqloracleoracle10g

提问by Raj More

Coming from SQL Server, I am learning some Oracle syntax.

来自 SQL Server,我正在学习一些 Oracle 语法。

This is my table DDL

这是我的表 DDL

CREATE TABLE "CDR"."EXTDL_REPORTSETS"
  (
    "ID"                NUMBER(38,0) NOT NULL ENABLE,
    "SHORTNAME"         NUMBER(38,0) NOT NULL ENABLE,
    "DESCRIPTION"       NUMBER(38,0) NOT NULL ENABLE,
    "ASOFSTARTDATETIME" NUMBER(38,0) NOT NULL ENABLE,
    "ASOFENDDATETIME"   NUMBER(38,0) NOT NULL ENABLE,
    CONSTRAINT "PK_EXTDL_REPORTSETS" PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "CDR_DATA" ENABLE
  )
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE
  (
    INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
  )
  TABLESPACE "CDR_DATA" ;

I want to default ASOFSTARTDATETIME to SysDate. How do I set a default constraint in PL/SQL?

我想将 ASOFSTARTDATETIME 默认为 SysDate。如何在 PL/SQL 中设置默认约束?

EDIT

编辑

The datatypes had gotten messed up, so I corrected it.

数据类型搞砸了,所以我纠正了它。

CREATE TABLE CDR.ExtDL_Reportsets(
    Id                   NUMBER(38, 0)    NOT NULL,
    ShortName            VARCHAR2(255)    NOT NULL,
    Description          VARCHAR2(500)    NOT NULL,
    AsOfStartDateTime    DATE             NOT NULL,
    AsOfEndDateTime      DATE,
    CONSTRAINT PK_ExtDL_Reportsets PRIMARY KEY (Id)
)
;

回答by OMG Ponies

Use:

用:

ALTER TABLE EXTDL_REPORTSETS
     MODIFY last_ASOFSTARTDATETIME DATE DEFAULT SYSDATE

I'm having trouble digging up the 10g reference documentation - this is for 11g.

我在挖掘 10g参考文档时遇到了麻烦——这是针对 11g 的

If you want to do it in the CREATE TABLE statement:

如果您想在 CREATE TABLE 语句中执行此操作:

CREATE TABLE "CDR"."EXTDL_REPORTSETS" (
  "ID"                NUMBER(38,0) NOT NULL ENABLE,
  "SHORTNAME"         VARCHAR2(255) NOT NULL ENABLE,
  "DESCRIPTION"       VARCHAR2(500) NOT NULL ENABLE,
  "ASOFSTARTDATETIME" DATE DEFAULT SYSDATE NOT NULL ENABLE,
  "ASOFENDDATETIME"   DATE NOT NULL ENABLE,
  CONSTRAINT "PK_EXTDL_REPORTSETS" PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "CDR_DATA" ENABLE
)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE (
   INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
)
TABLESPACE "CDR_DATA" ;