2016-12-11 8 views
0

강한 엔티티를 삽입하는 것과 함께 약한 엔티티에 적절한 키 값을 삽입하는 데 어려움을 겪고 있습니다.SQLite : 약한 엔티티 테이블에 삽입 (또는 정의 삽입 된 엔티티의 ID를 가져 오는 방법)

이 두 기관은 :

CREATE TABLE 'key' (
'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
... 

CREATE TABLE 'key_data_rsa' (
'id_key' INTEGER NOT NULL PRIMARY KEY REFERENCES 'key' ('id'), 
... 

내가 바람직 한 쿼리에서 테이블 '키'테이블 'key_data_rsa'의 핵심 데이터를 대응 키 메타 데이터를 삽입해야합니다.

나는 'key'의 'id'가 먼저 존재해야하기 때문에 'key_data_rsa'항목을 삽입하기 전에 'key'항목을 삽입해야합니다.

문제는 두 단계로이 작업을 수행하면 '키'항목의 트랙을 잃게됩니다. '키'의 유일하게 보장 된 고유 키는 'ID'이며 삽입되면 바로 ' 'id'를 얻기 위해 다시 선택할 수 있어야합니다.

강력한 엔티티와의 올바른 연결을 유지하기 위해이 시나리오에서 약한 엔티티에 어떻게 데이터를 삽입합니까?

심각하게이있는 경우가 아니면 구성표 및 사용 사례에 대해 논평을하거나 질문을 삼가시기 바랍니다. 감사.

-m.

+0

데이터베이스에 액세스하기 위해 사용하는 언어는 무엇입니까? –

+0

Perl DBI. 그게 어떻게 관련이 있니? – mikky

+1

http://stackoverflow.com/questions/6242756/how-to-retrieve-inserted-id-after-inserting-row-in-sqlite-using-python을 확인하십시오. Perl에서 동일한 로직을 적용 할 수 있는지 확인하십시오. @cl. quesiton relevant) –

답변

1

기능 last_insert_rowid()이 도움이됩니다. 가장 최근 성공한 삽입의 rowid를 rowid가있는 테이블로 리턴합니다. 귀하의 경우, 열 idINTEGER PRIMARY KEY 유형이며, 따라서 단지 다음과 같이 작동한다 약한 엔티티로부터 삽입 된 강한 엔티티를 참조하면 ROWID (참조 sqlite core functions)

별칭으로 취급된다 :

insert into key values (null, ...); 
insert into key_data_rsa values (last_insert_rowid(), ...); 
+0

네, 정확히 내가 뭘 찾고 있었는지 :) 그냥 똑같은 해결책을 찾았습니다. Dudu Markovitz가이 질문에 대해 언급 한 힌트를 따르면서. – mikky