sorry hit send by accident this should be:

CREATE TRIGGER sync_child_with_parent_update
 BEFORE UPDATE ON parent
   FOR EACH ROW BEGIN
     UPDATE child
        SET
         field_name_a = NEW.field_name_a,
         field_name_b = NEW.field_name_b,
         field_name_c = NEW.field_name_c,
       WHERE
         field_name_a = NEW.field_name_a
END;

// assuming  field_name_a is the  id field

On 3/29/07, stephan nies <[EMAIL PROTECTED]> wrote:

CREATE TRIGGER sync_child_with_parent_update
  BEFORE UPDATE ON parent
    FOR EACH ROW BEGIN
      UPDATE child
         SET
          field_name_a = NEW.field_name_a,
 field_name_b,
          field_name_c)
      VALUES
         (NEW.field_name_a,
          NEW.field_name_b,
          NEW.field_name_c);
END;

On 3/29/07, stephan nies <[EMAIL PROTECTED]> wrote:
>
> I think using triggers would be a good solution:
> You good just trigger on inserts and updates to parent
> and do whatever  you  like to child.
>
> Example:
>
> CREATE TRIGGER sync_child_with_parent_insert
>   BEFORE INSERT ON parent
>     FOR EACH ROW BEGIN
>       INSERT INTO child
>          (field_name_a,
>           field_name_b,
>           field_name_c)
>       VALUES
>          (NEW.field_name_a,
>           NEW.field_name_b,
>           NEW.field_name_c);
> END;
>
> CREATE TRIGGER sync_child_with_parent_update
>   BEFORE UPDATE ON parent
>     FOR EACH ROW BEGIN
>       INSERT INTO child
>          (field_name_a,
>           field_name_b,
>           field_name_c)
>       VALUES
>          (NEW.field_name_a,
>           NEW.field_name_b,
>           NEW.field_name_c);
> END;
>
> On 3/29/07, P Kishor < [EMAIL PROTECTED]> wrote:
> >
> > On 3/29/07, Arora, Ajay <[EMAIL PROTECTED]> wrote:
> > > Thanks for your reply.
> > >
> > > I'm writing my application in Perl using SQLite as file based
> > database.
> > > Multiple users would be accessing the database simultaneously.ButI'll
> > > lock the file prior to any updations to the database. I'm planning
> > to
> > > use a third table to generate ids for the master table. But I don't
> > know
> > > how to select id INTO a variable which can be used while inserting
> > data
> > > into both the tables. Is it possible?
> >
> >
> > Maybe you are not explaining your problem completely, else, I don't
> > see what the problem is. Here is some Perl code to do the above
> > without requiring a third table. You can adjust it accordingly if you
> > insist on a third table.
> >
> > # get your values to insert somehow
> > my $field1 = "my field one";
> > my $name   = "my name";
> >
> > # enable transactions, if possible
> > $dbh->{AutoCommit => 0, RaiseError => 1};
> >
> > eval {
> >   my $sth_master = $dbh->prepare(qq{
> >     INSERT INTO Master ( field1 ) VALUES ( ? )
> >   });
> >   $sth_master->execute( $field1 );
> >
> >   my $master_id = $dbh->func('last_insert_rowid');
> >
> >   my $sth_child = $dbh->prepare(qq{
> >     INSERT INTO Child ( id, name ) VALUES ( ?, ? )
> >   });
> >   $sth_master->execute( $master_id, $name );
> >
> >   # commit the changes if we get this far
> >   $dbh->commit;
> > };
> >
> > if ($@) {
> >     warn "Transaction aborted because $@";
> >
> >     # now rollback to undo the incomplete changes
> >     # but do it in an eval{} as it may also fail
> >     eval { $dbh->rollback };
> >
> >     # add other application on-error-clean-up code here
> > }
> >
> > >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
> > P
> > > Kishor
> > > Sent: 28 March 2007 17:42
> > > To: sqlite-users@sqlite.org
> > > Subject: Re: [sqlite] RE: Maintaining Master-Child relationships
> > >
> > >
> > > On 3/28/07, Arora, Ajay < [EMAIL PROTECTED]> wrote:
> > > > Can anyone please look into my query,
> > > >
> > > > I've tables
> > > >
> > > > Master ( id integer primary key,
> > > >          field1 text)
> > > >
> > > > And
> > > >
> > > > Child (id integer, name text)
> > > >
> > > > My application receive values for field1 and name.  I need to
> > populate
> > > > master and child with incoming values using the same id.
> > > >
> > >
> > > 1. Insert "field1" in Master;
> > > 2. Get id of record inserted from #1 above;
> > > 3. Insert id from #2 and "name" in Child.
> > >
> > > That is about all the help I can provide given that you have not
> > > provide any further context... what language you are using, how you
> > > are developing the application, etc.
> > >
> > > SQLite does provide a 'last_insert_rowid' capability. Look on the
> > > sqlite.org website.
> > >
> > > if you are 100% sure that no one else will be fiddling with your
> > > database, you can probably use something like
> > >
> > > INSERT INTO Child( id, name)
> > > VALUES ( (SELECT Max(id) FROM Master), <name>)
> > >
> > >
> > > > A quick reply will be highly appreciated.
> > > >
> > > > Regards
> > > > Ajay
> > > >
> > > > -----Original Message-----
> > > > From: Arora, Ajay
> > > > Sent: 28 March 2007 15:04
> > > > To: ' sqlite-users@sqlite.org'
> > > > Subject: Maintaining Master-Child relationships
> > > >
> > > >
> > > > Hi,
> > > >
> > > > I've two tables in my database, a master and a child with ID  as a
> >
> > > > common key.
> > > >
> > > > I've created a table with one column to generate the sequence
> > > number.How
> > > > can I insert related records into both the tables using same ID?
> > > >
> > > > Thanks
> > > > Ajay
> > > >
> >
> >
> > --
> > Puneet Kishor http://punkish.eidesis.org/
> > Nelson Inst. for Env. Studies, UW-Madison http://www.nelson.wisc.edu/
> > Open Source Geospatial Foundation http://www.osgeo.org/education/
> > ---------------------------------------------------------------------
> > collaborate, communicate, compete
> > =====================================================================
> >
> >
> > 
-----------------------------------------------------------------------------
> > To unsubscribe, send email to [EMAIL PROTECTED]
> > 
-----------------------------------------------------------------------------
> >
> >
> >
>

Reply via email to