1. ホーム
  2. postgresql

[解決済み] PostgreSQL ERROR: INSERT は式よりも多くのターゲット・カラムを持ちますが、そうではありません。

2022-02-18 13:33:19

質問

というわけで、まずはこんなところから...。

SELECT * FROM parts_finishing;

...これはわかる...

id、id_part、id_finish、id_metal、id_description、date, 内部時間、内部レート、外部材料

(0行)

...で、ここまでは問題なさそうなので、こうしてみる...。

INSERT INTO parts_finishing 
(
 id_part, id_finish, id_metal, id_description, 
 date, inside_hours_k, inside_rate, outside_material
) VALUES (
('1013', '6', '30', '1', NOW(), '0', '0', '22.43'), 
('1013', '6', '30', '2', NOW(), '0', '0', '32.45'));

...そして、私は...

ERROR: INSERT は式より多くのターゲットカラムを持つ

今、私は数字が引用符で囲まれていないことを確認するなど、いくつかのことを行いました(整数や数値型などに関して、そのためのテーブルガイドが欲しいところです)。 挿入される列名と値の数は当然数えています。また、すべてのカンマがカンマであることを確認してみましたが...本当にここで途方に暮れています。を除いて他のカラムはありません。 id というのは bigserial primary key .

解決方法は?

余分な () :

INSERT INTO parts_finishing 
(
 id_part, id_finish, id_metal, id_description, 
 date, inside_hours_k, inside_rate, outside_material
) VALUES 
  ('1013', '6', '30', '1', NOW(), '0', '0', '22.43')
, ('1013', '6', '30', '2', NOW(), '0', '0', '32.45')
  ;


その (..., ...) の構文は、Postgresでは タプルリテラル の追加セットです。 ( ) を使うと、タプルのタプルができてしまい、意味がありません。

また、数値リテラルでは、引用符は不要です。

(1013, 6, 30, 1, NOW(), 0, 0, 22.43)
, ...

これらの型がすべて数値であると仮定します。