It will work but remember that you have to mention in INSERT all
fields that you want to have non-default and non-null values. So if
you want just to update a couple of fields and leave as is all others
then you'll need to do something like this:

INSERT OR REPLACE INTO Customers
(SSN, Street, HouseNo, City, ... <all other fields>)
SELECT c.SSN, m.Street, m.HouseNo, m.City, c... <all other fields from c>
FROM Moved m, Customers c
WHERE c.SSN = m.SSN;


Pavel

On Tue, Sep 1, 2009 at 3:04 PM, Gerald Ebner<geraldo.eb...@gmail.com> wrote:
> thanks for the quick response!
>
> we typically have 3 unique keys on every table:
> - on the ID used for foreign keys
> - on the global unique ID used for synchronization
> - and on 2..3 fields that must be unique according to the problem domain
> (e.g. name + surname + birth date)
>
> will INSERT OR REPLACE also work in our situation?
>
> take care
> Geraldo
>
>
> Pavel Ivanov wrote:
>> If you have unique index on Customers.SSN in you database then you can
>> do it in SQLite like this:
>>
>> INSERT OR REPLACE INTO Customers
>> (SSN, Street, HouseNo, City)
>> SELECT SSN, Street, HouseNo, City FROM Moved;
>>
>>
>> Pavel
>>
>> On Tue, Sep 1, 2009 at 2:54 PM, Gerald Ebner<geraldo.eb...@gmail.com> wrote:
>>
>>> hm, finally I'm looking for a convenient way to execute update-selects,
>>> very helpful in doing synchronization between different databases
>>>
>>> is there in SQLite any other way?
>>>
>>> e.g.: there is a SQL-server-proprietary UPDATE FROM syntax, e.g.:
>>>
>>> UPDATE c
>>> SET Street  = m.Street,
>>>    HouseNo = m.HouseNo,
>>>    City    = m.City
>>> FROM Customers AS c INNER JOIN Moved AS m
>>> ON m.SSN = c.SSN;
>>>
>>> is this syntax supported by sqlite ?
>>> do you know any other convenient way to execute update-selects?
>>>
>>> many thanks in advance
>>> Geraldo
>>>
>>>
>>> Igor Tandetnik wrote:
>>>
>>>> Gerald Ebner <geraldo.eb...@gmail.com>
>>>> wrote:
>>>>
>>>>
>>>>> the given syntax is ANSI sql ("row-value constructors"),
>>>>> see also the discussion at
>>>>> http://sqlblog.com/blogs/hugo_kornelis/archive/2008/03/10/lets-deprecate-update-from.aspx
>>>>>
>>>>> Is it likely that row-value constructors will be implemented in the
>>>>> (near) future ?
>>>>>
>>>>>
>>>> I was curious as I've never heard of row-value constructors before. So
>>>> I've looked at SQL92
>>>> (http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt). The
>>>> document does define the concept of row value constructor - but does not
>>>> appear to allow their use in UPDATE statement the way you show:
>>>>
>>>>  <update statement: searched> ::=
>>>>               UPDATE <table name>
>>>>                 SET <set clause list>
>>>>                 [ WHERE <search condition> ]
>>>>
>>>> <set clause list> ::=
>>>>               <set clause> [ { <comma> <set clause> }... ]
>>>>
>>>> <set clause> ::=
>>>>               <object column> <equals operator> <update source>
>>>>
>>>> <object column> ::= <column name>
>>>>
>>>> <update source> ::=
>>>>                 <value expression>
>>>>               | <null specification>
>>>>               | DEFAULT
>>>>
>>>>
>>>> Perhaps this is changed in more recent editions of the standard (which
>>>> don't seem to be publicly available). If not, your proposed syntax
>>>> appears to be non-standard after all, cited article notwithstanding.
>>>>
>>>> Igor Tandetnik
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> sqlite-users mailing list
>>>> sqlite-users@sqlite.org
>>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>>
>>>>
>>>>
>>> _______________________________________________
>>> sqlite-users mailing list
>>> sqlite-users@sqlite.org
>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>
>>>
>>
>>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to