插入带有空白值的语句而不定义所有列

Insert statement with blank values without defining all columns

我需要将 100 多行数据插入到具有 25 个文本列的 table 中。 我只想在这些列中插入一些数据,其余的由白色 space.

表示

(注意:PeopleSoft table 上的文本字段被定义为 NOT NULLABLE,单个白色 space 字符用于指示无数据而不是空值。)

有没有一种方法可以编写不定义所有列以及空白的插入语句space。例如:

INSERT INTO CUST.RECORD(BUSINESS_UNIT, PROJECT_ID, EFF_STATUS, TMPL, DESCR) VALUES('TOO1','PROJ1','A','USA00','USA00 CONTRACT');

对于 CUST.RECORD 中的所有其他列,我想插入“ ”而不定义插入的列或 space。

一种方法是在 table 定义中设置默认值,如下所示:

CREATE TABLE CUST.RECORD(
  id          NUMBER DEFAULT detail_seq.NEXTVAL,
  master_id   varchar2(10) DEFAULT ' ',
  description VARCHAR2(30)
);

编辑:对于您的table,您可以使用:

alter table  CUST.RECORD modify( col2 varchar2(10) default ' ' );

您不必为特定列提供值 IF 任一条件为真:

  1. 列定义为可为空。也就是说,它不是用 'not null' 子句定义的。

  1. 列定义了默认值

    SQL> create table my_test (my_id number not null, 2 fname varchar2(10), -- 可为空 3 dob date default sysdate -- 默认值 4) 5;

    Table 已创建。

    SQL> -- SQL> -- 仅提供 my_id 的值 SQL> 插入 my_test(my_id) 值 (1);

    创建了 1 行。

    SQL> -- SQL> -- 查看结果 SQL> select * 2 来自 my_test;

      MY_ID FNAME      DOB
    

          1            12-MAR-21
    

    1 行 selected.

    SQL> -- SQL> select my_id, 2 nvl(fname,'NULL'), 3分 4 来自 my_test;

      MY_ID NVL(FNAME, DOB
    

          1 NULL       12-MAR-21
    

    1 行 selected.