2010-01-19

[psql] Insert z select'em w środku

Istnieje możliwość wrzucenia zawartości tego co otrzymaliśmy z SELECT'a bezpośrednio do tabeli za pomocą INSERT'a pisząc:

INSERT INTO moja_tabela (data_dodania, oper_id, poz_id, kodpozycji_id, ilosc) SELECT now() as data_dodania, '0' as oper_id, poz_id, kodpozycji_id, ilosc FROM moja_tabela WHERE poz_id=7 and ilosc=0;

Za pomocą takiej konstrukcji możliwe jest kopiowanie danych. Należy tylko pamiętać aby pola miały taki sam typ (int, date, timestamp itp.).

6 komentarzy:

  1. właśnie się zastanawiam czy nie przerzucić się na psql, czytałem że nowe wersje nie są już takie wolne - a nawet szybsze od mysql ;)

    OdpowiedzUsuń
  2. nie słyszałem żeby psql kiedykolwiek był wolny

    OdpowiedzUsuń
  3. ok - wolny to niezbyt trafne okreslenie ;]
    po prostu kiedys byl mniej wydajny od mysql

    OdpowiedzUsuń
  4. wybor miedzy mysql'em a psql'em troche przypomina mi wybor miedzy canonem a nikonem ;]
    mysle, ze oba rozwiazania sa w porzadku :]

    OdpowiedzUsuń
  5. czyli psql to taki nikon ? ;] czy migracje pomiedzy tymi systemami tez sa tak kosztowne ? na szczescie nie mam za duzo szkiel wiec specjalnie nic mnie mocno nie trzyma w tym systemie... ;)
    moze kiedys...

    OdpowiedzUsuń