Невозможно вставить в таблицу, где столбец является внешним ключом

Вставляя в мою таблицу, я получаю эту ошибку:

ОШИБКА: столбец "brandid" отношения "Item" не существует

Столбец brandId имеет ограничение внешнего ключа, которое связывает его с идентификатором другой таблицы.

таблица, в которую я вставляю, определяется так:

Column  |  Type   |                      Modifiers                      | Storage  | Stats target | Description 
---------+---------+-----------------------------------------------------+----------+--------------+-------------
 id      | integer | not null default nextval('"Item_id_seq"'::regclass) | plain    |              | 
 name    | text    | not null                                            | extended |              | 
 price   | money   | not null                                            | plain    |              | 
 sizes   | json    | not null                                            | extended |              | 
 brandId | integer | not null                                            | plain    |              | 
 deptId  | integer | not null                                            | plain    |              | 
Indexes:
    "item_pk" PRIMARY KEY, btree (id)
Foreign-key constraints:
    "Item_fk0" FOREIGN KEY ("brandId") REFERENCES "Brand"(id)
    "Item_fk1" FOREIGN KEY ("deptId") REFERENCES "Department"(id)

Я пытаюсь сделать следующее выражение вставки:

INSERT INTO "Item" (name, price, sizes, brandId, deptId) VALUES
        ('Air Force 1', '120.00', '{"12" : 1 , "10" : 12}',
            (SELECT id FROM "Brand" WHERE name= 'Nike'),
            (SELECT id FROM "Department" WHERE name= 'Mens Shoes'));

Все столбцы идентификаторов в моей базе данных имеют тип serial.

Таблицы брендов и отделов уже заполнены, и эти избранные утверждения были протестированы и работают правильно.

1 ответ

Решение

Ошибка говорит вам, что pgsql не может найти поле brandid (вместо brandId, как вы ожидали). Разница в том, что я против I. Попробуйте поставить имя поля в запросе вставки в двойных кавычках

INSERT INTO "Item" (name, price, sizes, "brandId", "deptId") VALUES
    ('Air Force 1', '120.00', '{"12" : 1 , "10" : 12}',
        (SELECT id FROM "Brand" WHERE name= 'Nike'),
        (SELECT id FROM "Department" WHERE name= 'Mens Shoes'));
Другие вопросы по тегам