插入一个空行

时间:2013-08-16 19:00:27

标签: oracle oracle11g

这很简单,可能已经被问到了,但我找不到它(如果是这样的话我很抱歉)。

我想在表上插入一个空行,这样我就可以通过ExecuteScalar获取其ID(主键,由插入触发器生成)。我的代码稍后会将数据添加到其中。

我的问题是:是否有特定的插入语法来创建空记录?或者我必须使用常规插入语法,例如“INSERT INTO table(列出所有列)值(每列为null)”?

感谢您的回答。

更新:在Oracle中,INSERT上的ExecuteScalar仅返回0.最终答案是下面发布的内容的组合。首先,您需要声明一个参数,然后使用RETURNING进行提取。

INSERT INTO TABLENAME (ID) VALUES (DEFAULT) RETURNING ID INTO :parameterName

请查看link以获取更多信息。

2 个答案:

答案 0 :(得分:4)

您不必指定每一列,但可能无法创建“空”记录。检查表上的NOT NULL约束。如果没有(不包括主键约束),那么您只需要提供一列。像这样:

insert into my_table ( some_column )
values ( null );

你知道RETURNING条款吗?执行INSERT时,可以将PK返回给调用的应用程序。

insert into my_table ( some_column )
values ( 'blah' ) 
returning my_table_id into <your_variable>;

我会质疑这种方法。为什么要创建一个空行?这可能意味着对该表没有约束,如果你想要好的,干净的数据,这是一件坏事。

答案 1 :(得分:3)

基本上,为了插入一行,除了主

之外,所有列的值都是NULL

键列的值,您可以执行简单的insert语句:

insert into your_table(PK_col_name)
  values(1);                          -- 1 for instance or null

前插入触发器,负责填充主键列

覆盖values语句的insert子句中的值,为您留下

空记录,但PK值除外。