невозможно вставить строку с идентификатором, но строка не существует

8

Вот странная проблема, с которой я сталкиваюсь. Я пытаюсь ввести данные, используя следующий запрос

insert into product_product 
(id, product_tmpl_id, make_equip, model_equip, name_template, serial_num_equip, location_equip, issue_date_equip, issue_to_equip, remarks_equip, pr, ch,  categ_id,valuation) 
values (700,700,'Nikon','Action 10x50 Lookout','Nikon Action 10x50 Lookout','671386','40 Wall St.','5/13/2004 12:00:00 AM','','OM''s OFFICE',62,72,502,'manual periodic');

Я получаю ошибку:

ERROR:  duplicate key value violates unique constraint "product_product_pkey"
DETAIL:  Key (id)=(700) already exists.

********** Error **********

ERROR: duplicate key value violates unique constraint "product_product_pkey"
SQL state: 23505
Detail: Key (id)=(700) already exists.

Я запустил запрос на выборку для этой записи следующим образом:

select * from product_product
where id=700

Возвращает столбцы без данных (данные также содержат идентификатор)

Я попытался запустить запрос на обновление, как это:

update product_product set 
                        product_tmpl_id=700,
                        make_equip='Nikon', 
                        model_equip='Action 10x50 Lookout', 
                        name_template='Nikon Action 10x50 Lookout', 
                        serial_num_equip='671386', 
                        location_equip='40 Wall St.', 
                        issue_date_equip='5/13/2004 12:00:00 AM', 
                        issue_to_equip='',
                        remarks_equip='OM''s OFFICE', 
                        pr=62, 
                        ch=72, 
                        categ_id=502,valuation='manual periodic' where id=700;

результат был:

Query returned successfully: 0 rows affected, 1 ms execution time.

Я пытался удалить запрос тоже, но тот же вывод.

Также показать все данные не показывает ничего, как идентификатор 700.

Я не знаю, почему это происходит.

Я переиндексировал и вычистил мой стол из обслуживания, но тот же результат.

Пожалуйста, дайте мне знать, что с ним не так.

Спасибо

редактировать

вот моя таблица создания

CREATE TABLE product_product
(
  id serial NOT NULL,
  create_uid integer,
  create_date timestamp without time zone,
  write_date timestamp without time zone,
  write_uid integer,
  ean13 character varying(13), -- EAN13 Barcode
  color integer, -- Color Index
  image bytea, -- Image
  price_extra numeric, -- Variant Price Extra
  default_code character varying(64), -- Internal Reference
  name_template character varying(128), -- Template Name
  .....
  description_sale text,
  procure_method character varying,
  produce_delay double precision,
  uom_id integer,
  name character varying,
  office_equip character varying, -- Office(Equipment)
  lease_agreement_equip character varying, -- Lease Agreement
  reg_exp_date_equip character varying, -- Registration Expiration Date
  CONSTRAINT product_product_pkey PRIMARY KEY (id ),
  CONSTRAINT product_product_categ_temp2_fkey FOREIGN KEY (categ_temp2)
      REFERENCES product_category (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_categ_temp3_fkey FOREIGN KEY (categ_temp3)
      REFERENCES product_category (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_categ_temps_fkey FOREIGN KEY (categ_temps)
      REFERENCES product_category (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_categg_temp_fkey FOREIGN KEY (categg_temp)
      REFERENCES product_category (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_ch_fkey FOREIGN KEY (ch)
      REFERENCES product_category (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_create_uid_fkey FOREIGN KEY (create_uid)
      REFERENCES res_users (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_my_products_fkey FOREIGN KEY (my_products)
      REFERENCES product_product (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_phone_data_id_fkey FOREIGN KEY (phone_data_id)
      REFERENCES phone_datas (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_phone_id_fkey FOREIGN KEY (phone_id)
      REFERENCES phone_types (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_pr_fkey FOREIGN KEY (pr)
      REFERENCES product_category (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_product_tmpl_id_fkey FOREIGN KEY (product_tmpl_id)
      REFERENCES product_template (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT product_product_subchild_fkey FOREIGN KEY (subchild)
      REFERENCES product_category (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_temp_id_fkey FOREIGN KEY (temp_id)
      REFERENCES product_category (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT product_product_write_uid_fkey FOREIGN KEY (write_uid)
      REFERENCES res_users (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL
)
WITH (
  OIDS=FALSE
);

У меня есть что-то вроде 200+ столбцов, поэтому я удалил их отсюда ....

Изображение последних строк в product_product введите описание изображения здесь

Сагир А. Хатри
источник

Ответы:

3

Столбец Идентификатор определяется как SERIAL , которая подобна свойству AUTO_INCREMENT поддерживается некоторыми другими базами данных. Поэтому вы должны опустить его в операторе INSERT или использовать ключевое слово DEFAULT, и новый идентификатор будет сгенерирован автоматически.

Смотрите раздел 8.1.4. Типы серий: http://www.postgresql.org/docs/9.3/static/datatype-numeric.html

JGA
источник