저는 Ruby Sequel (ORM gem)을 사용하여 Postgres 데이터베이스에 연결하고 있습니다. 나는 어떤 모델도 사용하지 않고있다. 내 insert 문은 "null null"이 자동으로 추가 된 것처럼 보입니다 (따라서 새로 삽입 된 행 ID/pk가 반환되지 않습니다). 이것의 용도는 무엇입니까? 그리고 이것이 왜 기본입니까? 그리고 더 중요한 것은 어떻게 그것을 비활성화 할 수 있습니까 (연결 전체)?내 삽입물에 "반환 null"을 추가하는 속편. 어떻게 비활성화합니까?
또한 데이터 세트가 있음을 확인했습니다. 메소드를 리터닝했지만 작동하지 않는 것 같습니다!
require 'sequel'
db = Sequel.connect 'postgres://user:[email protected]/foo'
tbl = "public__bar".to_sym #dynamically generated by the app
dat = {x: 1, y: 2}
id = db[tbl].insert(dat) #generated sql -- INSERT INTO "public"."bar" ("x", "y") VALUES (1, 2) RETURNING NULL
이 중요하지만 문제의 테이블 (포스트 그레스에게 테이블 상속을 사용하여) 상속하는 경우
이 몰라
루비 1.9.3p392 (2013년 2월 22일)의 i386-mingw32]
속편 (3.44.0)
--edit 1 - troubleshooting--
약간의 테이블 상속 같은데 후 여기에 문제가 될 수 있습니다. Sequel은 테이블의 pk를 결정하기 위해 쿼리를 자동으로 실행하는 것으로 보입니다 (내 경우에는 테이블의 체인에 정의 된 pk). "반환 null"이 추가되는 것을 발견하지 못했습니까? 그게 문제처럼
SELECT pg_attribute.attname AS pk FROM pg_class, pg_attribute, pg_index, pg_namespace WHERE pg_class.oid = pg_attribute.attrelid AND pg_class.relnamespace = pg_namespace.oid AND
pg_class.oid = pg_index.indrelid AND pg_index.indkey[0] = pg_attribute.attnum AND pg_index.indisprimary = 't' AND pg_class.relname = 'bar'
AND pg_namespace.nspname = 'public'
--edit 2--
그래이 보인다! 당신은 PostgreSQL의 상속을 사용하는 경우
나는 내 응용 프로그램이 관찰되지 않습니다. 몇 가지 코드를 보여주십시오. –
다행 니가 해결 했어. 잘 했어! :) –
하, 고마워. 그러나 슬프게도, 단지 확인하고 아직 해결책이 없습니다! – rebnoob