使用 Oracle 的多表插入语句插入(外键约束)父子表是否安全?
通过最少的示例,我发现只要父表在into列表中的子表之前,它就可以工作。我可以依靠这个还是应该使约束可以延迟?
使用 PL/SQL,假设我们已经声明了一个嵌套表类型及其实例,如下所示:
type nested_tab is table of pls_integer;
tab nested_tab;.
然后我们可以按如下方式初始化我们的嵌套表:
tab := nested_tab(1, 2, 3);.
我们可以做类似的事情来初始化关联数组吗?
换句话说,对于以下关联数组:
type associative_tab is table of varchar2(100) index by pls_integer;
a_tab associative_tab;
有没有比这更短的方法:
a_tab(1) := 'hello';
a_tab(2) := 'world';
...
a_tab(100) := '100th string';
用于初始化?
在 PL/SQL 中,假设我有一些定义如下的关联数组:
declare
type a_arr_t is table of PLS_INTEGER index by PLS_INTEGER;
a_arr a_arr_t;
Run Code Online (Sandbox Code Playgroud)
然后,我按如下方式稀疏地填充数组:
begin
a_arr(1) := 2;
a_arr(10) := 4;
a_arr(100) := 6;
end;
Run Code Online (Sandbox Code Playgroud)
是否有一些运算符或函数可以为我提供数组的索引,(1,10,100)作为某种集合,例如indices of在forall语句中?
假设我有一个parent由子表引用的父表child。该表parent已填充但未填充child。试图截断parent结果
ORA-02449: unique/primary keys in table referenced by foreign keys
Run Code Online (Sandbox Code Playgroud)
有没有办法向child空的 DBMS 提示,以便不需要禁用外键约束?
我正在使用 sqlldr 加载一个文件,该文件的字段之一是数值。
问题在于,在某些记录中,数字有逗号,而在其他记录中,则没有。
所以做类似的事情
num "to_number(:num, '999,999,999.99')",
Run Code Online (Sandbox Code Playgroud)
用逗号加载记录,但不加载那些没有逗号的记录,并且正在做
num "to_number(:num)",
Run Code Online (Sandbox Code Playgroud)
只加载那些没有逗号的。
有没有办法告诉 Oracle (sqlldr) 逗号是可选的?
在 Oracle 中,给定以下对象:
create table a (x number );
create table b (val number );
create table c (val number );
create sequence my_seq;
Run Code Online (Sandbox Code Playgroud)
假设我a按如下方式填充表:
insert into a (x) values (1);
insert into a (x) values (2);
insert into a (x) values (3);
insert into a (x) values (4);
Run Code Online (Sandbox Code Playgroud)
使用 中的值a,我想填充表b,c如下所示:当a.x为偶数时,从序列中生成一个新数字并插入my_seq.nextval到b.valand 中c.val;否则,将my_seq.currval(最近生成的值但不是新值)插入到c.val.
我目前拥有的是一个 insert all 语句,如下所示:
insert all
when mod(x,2) …Run Code Online (Sandbox Code Playgroud) 我试图456从字符串中提取:123:456:如下:
select regexp_substr(':123:456:', ':(\d+):', 1, 2, 'i', 1) from dual
Run Code Online (Sandbox Code Playgroud)
但是,此查询返回null。我究竟做错了什么?
oracle ×6
plsql ×2
array ×1
foreign-key ×1
insert ×1
oracle-11g ×1
sequence ×1
sql-loader ×1
truncate ×1