微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当Alter Default为NULL 1时缺少表达式

如何解决当Alter Default为NULL 1时缺少表达式

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

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

我尝试使用认为空值1

ALTER TABLE book MODIFY status DEFAULT ON NULL 1;

输出 ORA-00936:缺少表达式

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

解决方法

您的ALTER TABLE book MODIFY status DEFAULT ON NULL 1;语句有效(from Oracle 12.0.1 onwards):

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;

输出:

ID | STATUS
-: | -----:
 1 |      1
 2 |      0
 3 |      1

db 提琴here


如果您使用的数据库版本为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 提琴here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。