sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLの「INSERTにはターゲット列よりも多くの式があります」を修正しました

    INSERTにはターゲット列よりも多くの式があります」というエラーが発生した場合 」Postgresにデータを挿入しようとすると、テーブルに実際に含まれているよりも多くの列にデータを挿入しようとしているためです。

    たとえば、3つの列だけを含むテーブルに4つの式を挿入しようとしている可能性があります。

    修正するには、INSERTから余分な式を削除します 声明。つまり、正しい数の列を挿入していることを確認してください。

    エラーの例

    次のようなテーブルがあるとします。

    +-------+---------+---------+
    | petid | petname | pettype |
    +-------+---------+---------+
    |     1 | Fluffy  | Cat     |
    |     2 | Tweet   | Bird    |
    +-------+---------+---------+

    そのテーブルには3つの列があります。

    ここで、別の行を挿入するとします。

    エラーを生成する方法は次のとおりです。

    INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );

    結果:

    ERROR:  INSERT has more expressions than target columns
    LINE 1: INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
                                                       ^
    

    ここでは、3列しかないテーブルに4つの式を挿入しようとしました。

    ソリューション

    解決策は簡単です。余分な式を削除します:

    INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );

    ここでは、最後の式(Brown)を削除しました )VALUESから リスト。これにより、行がエラーなしで挿入されました。

    または、誤って間違った列にデータを挿入しないようにするために、各列を明示的に指定できます。

    INSERT INTO Pets ( PetId, PetName, PetType ) 
    VALUES ( 1, 'Wag', 'Dog' );

    上記のステートメントのいずれかを実行すると、テーブルは次のようになります。

    SELECT * FROM Pets;

    結果:

    +-------+---------+---------+
    | petid | petname | pettype |
    +-------+---------+---------+
    |     1 | Fluffy  | Cat     |
    |     2 | Tweet   | Bird    |
    |     3 | Wag     | Dog     |
    +-------+---------+---------+

    行をテーブルに正常に挿入しました。


    1. MySQLで1週間あたりの平均売上を計算する方法

    2. MySQLテーブル列に名前を付けるために番号を使用できますか?

    3. MySQLの既存のテーブルに自動インクリメント列を追加する方法

    4. SQL Serverのvarcharまたはcharフィールドで許可されているすべての特殊文字を確認するにはどうすればよいですか?