Sponsored Content
Top Forums Programming MYSQL - trigger update on record insert or update Post 302889989 by barrydocks on Monday 24th of February 2014 04:18:54 PM
Old 02-24-2014
Quote:
Originally Posted by spacebar
Since mySql doesn't allow "update or insert" syntax you will need to create a 'before insert' and a 'before update' trigger.

Example code:
Code:
create trigger before_insert_concat before insert on table1
for each row set col_comb  =  concat( new.cola,  ' - ',  new.colb,  ', ',  new.colc );

create trigger before_update_concat before update on table1
for each row set new.col_comb  =  concat( new.cola,  ' - ',  new.colb,  ', ',  new.colc );

Sorry I am a bit confused, does that mean I need to create a table named 'new' with 4 columns, 'col_comb', 'cola', colb', and 'colc'??

--------------Edit--------------------
Ignore all that, it works - thanks your a star :-)

Last edited by barrydocks; 02-24-2014 at 05:45 PM..
 

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk script to update header record

I am using HP UX and think this may be done with awk but bot sure. I have a file with a several header records and undeneath many detail records I need to put in the header record the number of detail records above this header record and number of detail records below this header record Header... (5 Replies)
Discussion started by: klut
5 Replies

2. UNIX and Linux Applications

update trigger

hi all, i hope i am posting this /beginner) question in the right forum: i want to create an update trigger, which rolls back a transaction if a record of a table is updated. the table has - amongst others - a field 'statusid' - if a record in this table has the statusid X and it is attempted... (0 Replies)
Discussion started by: kalinkula
0 Replies

3. Shell Programming and Scripting

Update trigger for unix file (solaris)

Hello, from log error file of process that i's updating in append mode, i need to capture the new entries for every day. How i can know and save only the new errors? This it's a sample of error log file (oas report server engine) thanks and regards Fran (2 Replies)
Discussion started by: fran61
2 Replies

4. Shell Programming and Scripting

Insert/Update using sed

Hi, I have a xml file (Config.xml) with following entry <Date="" Node1="50" Groups="20"> Now I want to use sed to insert/update the Date field with the latest date say - 20120711. I can't use a simple replace command becuase the Date field could be blank ("") or sometimes could have value in... (9 Replies)
Discussion started by: vivek_damodaran
9 Replies

5. Programming

MYSQL - trigger to track changes to fields on update

So I have a php web application that allows updating of records. I would like to track the changes of only the fields that have changed. There are plenty of how to's that involve recreating the original row in a separate table with an additional time/date stamp column but I think this is a big... (1 Reply)
Discussion started by: barrydocks
1 Replies

6. UNIX for Dummies Questions & Answers

Mysql: How to update value in 27000 rows?

Hello, some member created 27000 posts in wrong section (lol :D) so i need to edit all his entries to get new section ID. SELECT * FROM `phpbb_topics` WHERE `topic_first_poster_name` LIKE "%ozerway%"; this will select all his topics... the column with forum id is named "forum_id" and... (3 Replies)
Discussion started by: postcd
3 Replies

7. UNIX for Dummies Questions & Answers

How to update DNS record in Solaris 5.10?

Hi I have a DNS server running on Solaris 5.10, I need to update ip address of two urls defined on our dns server how do i do that? and do i need to restart dns/named service after? how do i restart the service? Thanks (4 Replies)
Discussion started by: arocker
4 Replies

8. Shell Programming and Scripting

Insert one table and update another with shellscript

I have a problem with my shell script. I want to insert data from file to table1(empty) and then, compare table1 with table2 and update some fields. The first part is correct, but the second part does not work. The only way it works is if after the first part I truncate table1 and run the script... (1 Reply)
Discussion started by: nika_mill
1 Replies
Parse::Dia::SQL::Output::SQLite3(3pm)			User Contributed Perl Documentation		     Parse::Dia::SQL::Output::SQLite3(3pm)

NAME
Parse::Dia::SQL::Output::SQLite3 - Create SQL for SQLite version 3. SYNOPSIS
use Parse::Dia::SQL; my $dia = Parse::Dia::SQL->new(file => 'foo.dia', db => 'sqlite3'); print $dia->get_sql(); DESCRIPTION
This sub-class creates SQL for the SQLite database version 3. new The constructor. Object names in SQLite have no inherent limit. 60 has been arbitrarily chosen. _get_create_table_sql Generate create table statement for a single table using SQLite syntax: Includes class comments before the table definition. Includes autoupdate triggers based on the class comment. autoupdate triggers If the class comment includes a line like: <autoupdate:foo/> Then an 'after update' trigger is generated for this table which executes the statement foo for the updated row. Examples of use include tracking record modification dates ("<autoupdate:dtModified=datetime('now')/">) or deriving a value from another field ("<autoupdate:sSoundex=soundex(sName)/">) get_schema_drop Generate drop table statments for all tables using SQLite syntax: drop table {foo} if exists get_view_drop Generate drop view statments for all tables using SQLite syntax: drop view {foo} if exists _get_fk_drop Drop foreign key enforcement triggers using SQLite syntax: drop trigger {foo} if exists The automatically generated foreign key enforcement triggers are: See "_get_create_association_sql" for more details. constraint_name_bi_tr constraint_name_bu_tr constraint_name_buparent_tr constraint_name_bdparent_tr _get_drop_index_sql drop index statement using SQLite syntax: drop index {foo} if exists get_permissions_create SQLite doesn't support permissions, so supress this output. get_permissions_drop SQLite doesn't support permissions, so supress this output. _get_create_association_sql Create the foreign key enforcement triggers using SQLite syntax: create trigger {fkname}[_bi_tr|_bu_tr|_bdparent_tr|_buparent_tr] Because SQLite doesn't natively enforce foreign key constraints (see <http://www.sqlite.org/omitted.html>), we use triggers to emulate this behaviour. The trigger names are the default contraint name (something like child_table_fk_child_fkcolumn) with suffixes described below. {constraint_name} is the name of the association, either specified or generated. {child_table} is the name of the dependent or child table. {child_fkcolumn} is the field in the dependent table that hold the foreign key. {parent_table} is the name of the parent table. {parent_key} is the key field of the parent table. Before insert - Dependent Table constraint_name_bi_tr Before insert on the child table require that the parent key exists. create trigger {constraint_name}_bi_tr before insert on {child_table} for each row begin select raise(abort, 'insert on table {child_table} violates foreign key constraint {constraint_name}') where new.{child_fkcolumn} is not null and (select {parent_key} from {parent_table} where {parent_key}=new.{child_fkcolumn}) is null; end; Before update - Dependent Table constraint_name_bu_tr Before update on the child table require that the parent key exists. create trigger {constraint_name}_bu_tr before update on {table_name} for each row begin select raise(abort, 'update on table {child_table} violates foreign key constraint {constraint_name}') where new.{child_fkcolumn} is not null and (select {parent_key} from {parent_table} where {parent_key}=new.{child_fkcolumn}) is null; end; Before update - Parent Table constraint_name_buparent_tr Before update on the primary key of the parent table ensure that there are no dependent child records. Note that cascading updates don't work. create trigger {constraint_name}_buparent_tr before update on {parent_table} for each row when new.{parent_key} <> old.{parent_key} begin select raise(abort, 'update on table {parent_table} violates foreign key constraint {constraint_name} on {child_table}') where (select {child_fkcolumn} from {child_table} where {child_fkcolumn}=old.{parent_key}) is not null; end; Before delete - Parent Table constraint_name_bdparent_tr The default behaviour can be modified through the contraint (in the multiplicity field) of the association. Default (On Delete Restrict) Before delete on the parent table ensure that there are no dependent child records. create trigger {constraint_name}_bdparent_tr before delete on {parent_table} for each row begin select raise(abort, 'delete on table {parent_table} violates foreign key constraint {constraint_name} on {child_table}') where (select {child_fkcolumn} from {child_table} where {child_fkcolumn}=old.{parent_key}) is not null; end; On Delete Cascade Before delete on the parent table delete all dependent child records. create trigger {constraint_name}_bdparent_tr before delete on {parent_table} for each row begin delete from {child_table} where {child_table}.{child_fkcolumn}=old.{parent_key}; end; On Delete Set Null Before delete on the parent table set the foreign key field(s) in all dependent child records to NULL. create trigger {constraint_name}_bdparent_tr before delete on {parent_table} for each row begin update {child_table} set {child_table}.{child_fkcolumn}=null where {child_table}.{child_fkcolumn}=old.{parent_key}; end; TODO
Things that might get added in future versions: Mandatory constraints The current foreign key triggers allow NULL in the child table. This might use a keyword in the multiplicity field (perhaps 'required') or could check the 'not null' state of the child fkcolumn. Views Views haven't been tested. They might already work, but who knows... Other stuff Bugs etc perl v5.14.2 2011-02-15 Parse::Dia::SQL::Output::SQLite3(3pm)
All times are GMT -4. The time now is 05:12 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy