此处不允许使用 Oracle 列默认值
Oracle Column Not Allowed Here Default Value
问题是关于使用第 4 行上的序列的 DEFAULT 值。
CREATE OR REPLACE SEQUENCE CHANNEL_SEQ START WITH 1 INCREMENT BY 1;
CREATE TABLE "CHANNEL" (
"ID_CHANNEL" NUMBER(18,0) DEFAULT CHANNEL_SEQ.NEXTVAL,
"IS_ACTIVE" VARCHAR2(1 CHAR) NOT NULL,
"BATCH_SIZE" NUMBER(3,0) NOT NULL,
"MAX_DOCS_IN_PROCESS" NUMBER(4,0) NOT NULL,
"RECEIVER_ID" NUMBER(18,0) NOT NULL,
"LAST_POS_SESSION_TIME" DATE,
CONSTRAINT "PK_CHANNEL" PRIMARY KEY ("ID_CHANNEL"),
CONSTRAINT "FK_RECEIVER_ID_CHANNEL" FOREIGN KEY ("RECEIVER_ID") REFERENCES "MSG_OUT"("MSG_OUT_ID"),
CONSTRAINT "CHK_IS_ACTIVE" CHECK (IS_ACTIVE IN ('Y', 'N'))
);
错误消息是:
"SQL Error: ORA-00984: column not allowed here"
欢迎所有帮助和提示。
您不能使用 seq.NEXTVAL
作为默认值。
为此(自动填充)您应该创建触发器,例如
CREATE OT REPLACE TRIGGER
BEFORE INSERT
ON CHANNEL
FOR EACH ROW
BEGIN
:NEW.ID_CHANNEL:=CHANNEL_SEQ.NEXTVAL;
END;
问题是关于使用第 4 行上的序列的 DEFAULT 值。
CREATE OR REPLACE SEQUENCE CHANNEL_SEQ START WITH 1 INCREMENT BY 1;
CREATE TABLE "CHANNEL" (
"ID_CHANNEL" NUMBER(18,0) DEFAULT CHANNEL_SEQ.NEXTVAL,
"IS_ACTIVE" VARCHAR2(1 CHAR) NOT NULL,
"BATCH_SIZE" NUMBER(3,0) NOT NULL,
"MAX_DOCS_IN_PROCESS" NUMBER(4,0) NOT NULL,
"RECEIVER_ID" NUMBER(18,0) NOT NULL,
"LAST_POS_SESSION_TIME" DATE,
CONSTRAINT "PK_CHANNEL" PRIMARY KEY ("ID_CHANNEL"),
CONSTRAINT "FK_RECEIVER_ID_CHANNEL" FOREIGN KEY ("RECEIVER_ID") REFERENCES "MSG_OUT"("MSG_OUT_ID"),
CONSTRAINT "CHK_IS_ACTIVE" CHECK (IS_ACTIVE IN ('Y', 'N'))
);
错误消息是:
"SQL Error: ORA-00984: column not allowed here"
欢迎所有帮助和提示。
您不能使用 seq.NEXTVAL
作为默认值。
为此(自动填充)您应该创建触发器,例如
CREATE OT REPLACE TRIGGER
BEFORE INSERT
ON CHANNEL
FOR EACH ROW
BEGIN
:NEW.ID_CHANNEL:=CHANNEL_SEQ.NEXTVAL;
END;