甲骨文 11g - "DEFAULT ON NULL"?

标签 oracle oracle11g null default default-value

我正在运行 Oracle Database 11g 企业版版本 11.2.0.4.0 - 64 位生产版,我试图为表找到与 12c 的“DEFAULT ON NULL”等效的表。基本上我必须创建一个表,其中的要求是每当有人有意或无意地传递 NULL 值时,它就会被替换为 DEFAULT 值(在本例中为 NUMBER 类型等于 1)。在11g中有什么简单的方法可以做到这一点吗?我知道我可以在 table 上做一个触发器,但我必须为每一列添加逻辑,这看起来很荒谬。

我的表定义目前如下所示:

CREATE TABLE MYTABLE
(
    FLAG   NUMBER(1)   DEFAULT 0
)

如果我明确传入 null 它将被存储。在这种情况下,我希望改为放置默认值。

最佳答案

您可以对列使用简单的“DEFAULT”行为,并且在插入时不提供任何内容。

CREATE TABLE table1 (
id NUMBER(8.0) NOT NULL,
col1 NUMBER(8.0) NOT NULL DEFAULT 10,
col2 NUMBER(8.0) NOT NULL DEFAULT 20,
PRIMARY KEY (id);
);

INSERT INTO table1 (id) values (123); //will result in creating a row with default values.

此外,如果您使用某种 ORM,则可以使用动态插入和动态更新选项。这样,如果您在插入时不提供值,它们将被设置为默认值; 并且在更新时,未更改的值将不会包含在查询中。

通过这种方式,您可以绕过查询中的显式空值,并应用默认值。

关于甲骨文 11g - "DEFAULT ON NULL"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39026790/

相关文章:

sql - 如何生成 SQL 格式的更改日志以创建当前数据库模式?

Oracle.ManagedDataAccess.EntityFramework-ORA-01918 : user 'dbo' does not exist

forms - 使用OATS的Oracle Forms Automation

oracle11g - PostgreSQL : What is the maximum column length for CITEXT type

java - 解析项目点击监听器 null 异常

php - 在 mysqli 准备好的语句中使用空值

wpf - 如果它为空,如何在触发器中设置属性?

sql - ORA-00928 : missing SELECT keyword. 请解释一下

oracle - 排序是发生在 Oracle 的 DB Buffer 缓存还是 PGA 中?

sql - Oracle 从字符串中提取字母字符