Nah, ignore that, I was talking garbage...

Using the view is a neater way of doing that select statement, but you
still need to create the temp table to avoid the locking issues...

Rachel

On 03/12/05, Rachel Willmer <[EMAIL PROTECTED]> wrote:
> (Replying to my own email so I can find this answer again via google
> in the future...)
>
> I have an even better solution...
>
> CREATE VIEW NewView AS SELECT * FROM table1 LEFT JOIN table2 on
> table1.field=table2.field WHERE table2.field is NULL;
>
> Works just fine...
>
> Cheers
> Rachel
>
> Back In Oct, I asked:
> Rachel Willmer <[EMAIL PROTECTED]> wrote:
> > I want to search two tables which should contain the same records and
> > add any that are missing from the second into the first.
> >
> > So I do
> >
> > SELECT * FROM table1 LEFT JOIN table2 on table1.field=table2.field
> > WHERE table2.field is NULL
> >
> > So far, so good, I get the records I want. Then in the callback, I try
> >
> > INSERT INTO table1 etc...
> >
> > This fails with a "database table is locked" error.
> >
> > I'm assuming that this is because I'm still in the middle of doing the
> > SELECT statement.
> >
> > So my question is this, do I have to use the callback to copy the
> > records into a temp table, and then only add them after the
> > sqlite3_exec() which calls the SELECT has returned? or is there a more
> > elegant/obvious solution?
>
> On 14/10/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> >
> > Solution 1 is to use a TEMP table:
> >
> >   CREATE TEMP TABLE diffs AS
> >      SELECT * FROM table1 LEFT JOIN table2 ....;
> >   SELECT * FROM diffs; -- Insert into table1 in the callback;
> >   DROP TABLE diffs;
> >
> > Solution 2 is a dirty trick.  It works now and in all historical versions
> > of SQLite and there are no plans to change it, but there are also no
> > promises not to change it.  In solution 2, add
> >
> >   ORDER BY +table1.rowid
> >
> > to the end of your SELECT statement.  The "+" sign in front of the
> > "table1.rowid" is *essential* if this is trick is to work.
> >
> >   --
> > D. Richard Hipp <[EMAIL PROTECTED]>
>

Reply via email to