2016-09-22 5 views
0

私はこれらの3つのサービス用テーブル、executed_servicesとサービスを評価する評価表を持っています。私のレーティング・テーブルには、execute_servicesの外部キーがあります。したがって、私は、実行するサービスを、execute_services関係に「コピー」したいと思っていました。私は次の手順を使用してみましたが、この選択は機能しません。なぜなら、1つの結果しか返さないからです。テーブルを別のテーブルにコピーしていますか?

したがって、1つのテーブルからすべての値を取得して別のテーブルに挿入するにはどうすればよいですか?それとも他の方法がありますか?

答えて

0
INSERT INTO servico_executado 
     SELECT id, data_abertura, id_solicitacao, id_profissional 
     FROM servico WHERE id = NEW.id_servico; 

「VALUES」は使用しないでください。テーブルに列がさらにある場合は、それらの欠落している列に対してselect文でnullを使用できます。

+0

ありがとう、私はそれでも考えなかった。魅力のように働いた –

+0

私はあなたがフィードバックを書く時間を費やしてうれしいです。ありがとう。私を信じて、あなたは来年にほぼ100回、この「xyzからのabc select .. insert」を使用します。 –

1

次の簡単なクエリとCTEにワンステップで非常に簡単にそれを行うことができます。

WITH deleted AS (DELETE FROM servico WHERE id = $1 RETURNING *) 
INSERT INTO servico_executado (id, data_abertura, id_solicitacao, id_profissional) 
SELECT id, data_abertura, id_solicitacao, id_profissional FROM deleted 
RETURNING *; 

PL/pgSQLに使用する必要はありません。上記のクエリでは、移動されたサービスのidがプレースホルダー$1によって示されます。

+0

助けてくれてありがとう、しかし、私は他のaswerに固執しますよね。 –

+0

これも正解です。私はこれを投票するつもりです。 –

関連する問題