如何解决当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 举报,一经查实,本站将立刻删除。