sql >> Database >  >> RDS >> Oracle

Meerdere rijen in dezelfde tabel invoegen - Oracle 10g

Een INSERT VALUES statement voegt altijd precies 1 rij in. Als u meerdere rijen met hardgecodeerde waarden wilt invoegen, is de meest gebruikelijke aanpak om twee afzonderlijke INSERT uit te voeren. verklaringen.

insert into t1 values(131309,'HP','20-FEB-04',2000000,1235);
insert into t1 values(131310,'HT','20-APR-14',120020,1234);

Als je echt zou willen, zou je je hard-coded waarden kunnen selecteren uit dual en doe dan een INSERT SELECT

insert into t1
  select 131309, 'HP', '20-FEB-04',2000000,1235 from dual
  union all
  select 131310,'HT','20-APR-14',120020,1234 from dual

Of je zou een INSERT ALL . kunnen doen

insert all 
  into t1 values(131309,'HP','20-FEB-04',2000000,1235)
  into t1 values(131310,'HT','20-APR-14',120020,1234)
  select * from dual

Persoonlijk zou ik gewoon twee uitspraken gebruiken.

Hoewel dit geen verband houdt met uw vraag, een paar opmerkingen

  • Maak altijd een lijst van de kolommen in uw insert uitspraak. U maakt uw SQL veel robuuster, zodat als u in de toekomst nieuwe kolommen toevoegt die NULL toestaan waarden zullen uw uitspraken nog steeds werken. En je vermijdt veel bugs als de kolomlijst daar is, in plaats van te hopen dat iemand de volgorde van de kolommen in de tabel onthoudt.
  • Als je een waarde invoegt in een date kolom, gebruik dan een datum en geen letterlijke tekenreeks die een datum vertegenwoordigt. Vertrouwen op impliciete conversie van gegevenstypes is een bron van veel bugs. Gebruik een expliciete to_date of gebruik ANSI-datumletters. En gebruik 4-cijferige jaren.



  1. Postgres trigger-gebaseerde invoegomleiding zonder RETURNING te verbreken

  2. Meerdere rijen samenvoegen tot één kolom in MySQL

  3. MySQL integer-vergelijking negeert achterliggende alfatekens

  4. SQL-query om afzonderlijke rijen uit de linkertabel te selecteren na de inner join naar de rechtertabel