Thanks everyone. I was mis-equating REPLACE with UPDATE. I’ll change my code to 
“INSERT or IGNORE” and add an UPDATE. 

Mike

> On Sep 18, 2016, at 05:34, Keith Medcalf <kmedc...@dessus.com> wrote:
> 
> 
> On Saturday, 17 September, 2016 21:35, mikeeggl asked:
> 
>> In my DDL I have “integer primary key not null” on my tables. When I do
>> the first insert to these tables the rowid is assigned. The insert
>> statement is a “insert or replace into…” so I don’t have to deal with
>> insertion errors. However, I expected the rowid to not change when the row
>> has not changed (when the replace is part of the clause is used). Is there
>> a way to not have the rowid changed when “insert or replace into…” is
>> used?
> 
> Specify the integer primary key in the insert or replace?
> 
> "INSERT OR REPLACE"
> 
> INSERTs a row if it does not cause an integrity violation.
> if the attempt to INSERT the row causes an integrity violation, then REPLACE 
> deletes (all) the conflicting row(s) then does the INSERT.
> 
> If no integer primary key value is specified (ie, is null) when the INSERT 
> (either the initial INSERT, or the one after the conflicting rows have been 
> removed), then a new integer primary key is generated.
> 
> If you do not want the OR REPLACE then perhaps OR IGNORE is what you want.  
> Possibly preceded by one or more conditional UPDATE(s) to update any 
> pre-existing rows.
> 
> INTEGER PRIMARY KEY is always not null since the ROWID cannot be null.  Your 
> specification of not null is redundant.  The specification of NULL or NOT 
> NULL on integer primary key columns (even for WITHOUT ROWID tables) is 
> silently ignored.
> 
> 
> 
> 
> 
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to