Mã đã đăng sử dụng cú pháp CHÈN TẤT CẢ để chèn nhiều hàng trong một câu lệnh. Nó cố gắng sử dụng trình tự NEXTVAL để tạo số nhận dạng duy nhất cho mỗi hàng.
tài liệu khá rõ ràng về hoạt động của NEXTVAL:
Vì vậy, mỗi cuộc gọi đến NEXTVAL sẽ trả về giống nhau giá trị từ chuỗi, và do đó, câu lệnh ném ORA-00001.
Vấn đề là mã của OP đang sử dụng sai cú pháp chèn nhiều bảng. Nó nhằm phân phối các hàng từ một tập dữ liệu nguồn trên nhiều bảng hoặc thao tác có điều kiện các hàng thành một bảng. Trong cả hai trường hợp, nó giả định dữ liệu nguồn đã có khóa chính.
Có nhiều cách khác nhau để giải quyết vấn đề này, từ mã hóa cứng ID đến sử dụng nhiều câu lệnh chèn bảng duy nhất.
Đây là một cách để điền các bảng này với dữ liệu đã đăng:
insert into athlete (athlete_no, athlete_name, athlete_birthdate, athlete_birthplace, athlete_born_country, athlete_gender, athlete_height, athlete_weight, athlete_team_country)
select athlete_no_seq.nextval , nm, dt, pl, ctry, gn, ht, wt, tm
from (
select 'Michael Phelps' nm, to_date('1985-06-30','yyyy-mm-dd') dt, 'Towson' pl, 'USA' ctry, 'M' gn, 193 ht, 88 wt, 'USA' tm from dual union all
select 'Stephanie Rice', to_date('1988-06-17','yyyy-mm-dd'), 'Brisbane', 'AUS', 'F', 176, 67, 'AUS' from dual union all
select 'Rebecca Adlington', to_date('1989-02-17','yyyy-mm-dd'), 'Mansfield', 'GBR', 'F', 179, 870, 'GBR' from dual union all
select 'Lee Chong Wei', to_date('1982-10-21','yyyy-mm-dd'), 'Perak', 'MAS', 'M', 170, 60, 'MAS' from dual union all
select 'Lin Dan', to_date('1983-10-14','yyyy-mm-dd'), 'Fujian', 'CHN', 'M', 176, 68, 'CHN' from dual union all
select 'Peter Gade', to_date('1976-12-14','yyyy-mm-dd'), 'Aalborg', 'DEN', 'M', 183, 73, 'DEN' from dual
)
/
insert into competes (athlete_no, discipline_code, sg_gameno)
select ath.athlete_no, disc.discipline_code, 30
from athlete ath
cross join discipline disc
where disc.discipline_name = 'Swimming'
/
insert into venue(venue_no, venue_name, venue_location, venue_usedfrom, venueused_to, venue_seatingcapacity, venue_structure, venue_use)
select venue_no_seq.nextval, nm, loc, dtf, dtt, cap, vs, vu
from (
select 'Aquatics Centre' nm, 'Olympics Park, East London' loc, to_date('2012-07-28','yyyy-mm-dd') dtf, to_date('2012-10-08','yyyy-mm-dd') dtt, 17500 cap, 'N' vs, 'P' vu from dual union all
select 'Wembley Arena', 'North West London', to_date('2012-07-28','yyyy-,mm-dd'), to_date('2012-08-05','yyyy-mm-dd'), 6000, 'E', 'P' from dual
)
/