需要添加以下两个插入语句:
insert into table1(schema, table_name, table_alias)
values ('ref_owner','test_table_1','tb1');
insert into table1(schema, table_name, table_alias)
values ('dba_owner','test_table_2','tb2');
问题是我该如何使这两个插入语句可重新运行,也就是说,如果再次编译这两个插入语句,它应该抛出行存在错误或类似的东西……?
其他说明: 1.但是,我已经看过Oracle中Merge的示例,仅当您使用两个表来匹配记录时才如此。在这种情况下,即时消息仅使用单个表。 2.该表没有任何主键,唯一键或外键-仅检查列之一上的约束。
我们非常感谢您的帮助。
答案 0 :(得分:0)
您应具有主键,尤其是当您要检查重复记录和数据完整性时。
为表提供主键,或者,如果您不希望这样做,请为表中的所有列创建唯一约束,因此不可能有重复的行。
答案 1 :(得分:0)
您可以使用MERGE语句,如下所示:
MERGE into table1 t1
USING (SELECT 'ref_owner' AS SCHEMA_NAME, 'test_table_1' AS TABLE_NAME, 'tb1' AS ALIAS_NAME FROM DUAL
UNION ALL
SELECT 'dba_owner', 'test_table_2', 'tb2' FROM DUAL) d
ON (t1.SCHEMA = d.SCHEMA_NAME AND
t1.TABLE_NAME = d.TABLE_NAME)
WHEN NOT MATCHED THEN
INSERT (SCHEMA, TABLE_NAME, TABLE_ALIAS)
VALUES (d.SCHEMA_NAME, d.TABLE_NAME, d.ALIAS_NAME)
好运。