SQLiteStatement 클래스의 executeInsert에 대한 설명서에서 다음과 같이 말합니다.어떤 경우 sqlite executeInsert가 -1을 반환합니까?
@return 삽입이 성공하면 삽입 된 마지막 행의 행 ID입니다. 그렇지 않으면 -1.
그러나 쿼리가 실패하면 예외를 캐스팅 할 수 있으므로 어떤 경우에 예외를 throw하는 대신 -1을 반환 할 것인지 결정합니다.
SQLiteStatement 클래스의 executeInsert에 대한 설명서에서 다음과 같이 말합니다.어떤 경우 sqlite executeInsert가 -1을 반환합니까?
@return 삽입이 성공하면 삽입 된 마지막 행의 행 ID입니다. 그렇지 않으면 -1.
그러나 쿼리가 실패하면 예외를 캐스팅 할 수 있으므로 어떤 경우에 예외를 throw하는 대신 -1을 반환 할 것인지 결정합니다.
유효한 SQL이지만 실제로 레코드를 삽입하지 않는 INSERT
문을 사용할 수 있습니다. INSERT ... SELECT form을 사용할 때 SELECT
쿼리는 실제로 레코드를 반환하지 않을 수 있습니다.
아하, 그 생각하지 않았다. – MTilsted
당신이 VIEW
에 삽입 할 경우 예를 들어, -1 반환합니다
CREATE VIEW Magic AS select * from Something;
CREATE TRIGGER Magic_Insert
INSTEAD OF INSERT ON Magic
BEGIN
insert into Something_Else values (new._id, NULL)
-- create another something that has the same ID, but without a roundtrip back to Java
insert into Something_Connected values (last_insert_rowid(), new.name)
END;
을 자바에서
SQLiteStatement insert = db.compileStatement("insert into Magic(_id, name) values(?, ?);");
// bind and stuff
long rowid = insert.executeInsert();
재미있는 것은 우리의 ID를 얻기 위해 SELECT
에 필요가 무엇인지 방금 삽입 했으므로 왕복 절약이 빠르게 반전되지만 필요한 경우 사용할 수 있습니다.
내가 잘못하지 않은 경우 반환 값이 항상 제공되고 예외가 연결에 설정됩니다. 따라서 반환 값을 확인하고 예외를 직접 검색해야합니다. – ThaMe90
제목이'pgsql '을 언급하는 이유는 무엇입니까? –
그건 실수 였어. 그것 sqlite – MTilsted