0

我在表格簿中有列...命名为状态...我想设置默认值 1...

但是,我尝试了 DEFAULT 1, ALTER TABLE book MODIFY status DEFAULT 1 并且我插入了新记录...记录状态为

我尝试在 null 1 上使用 Default

ALTER TABLE book MODIFY status DEFAULT ON NULL 1;

输出:ORA-00936:缺少表达式

我应该怎么办?如果我希望状态值默认为 1,插入新记录时不为空

4

1 回答 1

1

您的ALTER TABLE book MODIFY status DEFAULT ON NULL 1;声明有效(从 Oracle 12.0.1 开始):

CREATE TABLE book (
  id     INT
         GENERATED ALWAYS AS IDENTITY
         PRIMARY KEY,
  status NUMBER(1)
);

ALTER TABLE book MODIFY status DEFAULT ON NULL 1;

INSERT INTO book ( status ) VALUES ( NULL );
INSERT INTO book ( status ) VALUES ( 0 );
INSERT INTO book ( status ) VALUES ( 1 );

然后:

SELECT * FROM book;

输出:

身份证 | 地位
-: | -----:
 1 | 1
 2 | 0
 3 | 1

db<>在这里摆弄


如果您使用的是 12.0.1 之前的数据库版本,那么您也可以使用触发器:

CREATE TRIGGER book__status_is_null__trg
BEFORE INSERT OR UPDATE ON book FOR EACH ROW
BEGIN
  IF :new.status IS NULL THEN
    :new.status := 1;
  END IF;
END;
/

db<>在这里摆弄

于 2020-11-11T10:41:02.580 回答