有一个表Person(id,name)。我要在个人表中插入1000多个记录。 ID和名称都应该唯一。我写了这样的东西
INSERT ALL
INTO PERSON (1, 'MAYUR')
INTO PERSON (2, 'SALUNKE')
.....(1000 records)
SELECT * FROM DUAL;
在此查询中,我得到了名称的唯一约束。我怎么知道哪条记录特别失败。我在日志中看到的就是这个
从第3行开始的错误-ORA-00001:唯一约束 (UN_PERSON_NAME)违反了。
这不会告诉您确切的记录是重复的。
答案 0 :(得分:2)
您缺少values
关键字。试试吧!
INSERT ALL
INTO PERSON values(1, 'MAYUR')
INTO PERSON values(2, 'SALUNKE')
.....(1000 records)
SELECT * FROM DUAL;
答案 1 :(得分:-1)
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
答案 2 :(得分:-1)
不幸的是,Oracle不支持使用单个VALUES()
语句进行多次插入。我通常这样处理:
INSERT PERSON (id, name)
SELECT 1, 'MAYUR' FROM DUAL UNION ALL
SELECT 2, 'SALUNKE' FROM DUAL UNION ALL
.....;
此方法的一个优势是您可以使用子查询并分配ID:
INSERT PERSON (id, name)
SELECT rownum, x.name
FROM (SELECT 'MAYUR' FROM DUAL UNION ALL
SELECT 'SALUNKE' FROM DUAL UNION ALL
.....
) x