Use a mysql trigger to replace text in column - mysql

everybody!
I have a table with name order and into order have column payment_method, I need find in this columns specific text (Bank transfer) and replace with (bank) after into insert to table value Bank transfer, how I do this via MySQL triggers?
I tried to set trigger with this value
delimiter |
FOR EACH ROW
BEGIN
IF order.payment_method like %Bank transfer% THEN
SET order.payment_method = 'Bank';
END IF;
END
|
delimiter ;
And trigger parametr
Time:AFTER
Event:UPDATE
Please help!
Thanks!

CREATE TRIGGER tr_bi_order
BEFORE INSERT
ON order
FOR EACH ROW
SET NEW.payment_method = CASE WHEN NEW.payment_method LIKE '%Bank transfer%'
THEN 'Bank'
ELSE NEW.payment_method
END;
And the same trigger on BEFORE UPDATE event.

Related

MYSQL Trigger update not working as expected when value is updated

Looking to use a trigger on a MYSQL table when the row is updated, anytime the row is updated. Only setting the id if the id field is null
create trigger before_id_update
BEFORE UPDATE
ON USERS for each row
BEGIN
if id iS NULL THEN
SET id = username
END IF;
END
Currently nothing is happening when the table row is updated
Your code should raise a syntax error, since id and username are undefined variables. If you want to access the values on the updated row, use pseudo-tables NEW or OLD.
You also need a delimiter statement at the beginning of your code, and the set command should be terminated with a semi-colon.
You presumably want:
delimiter //
create trigger before_id_update
before update on users
for each row
begin
if new.id is null then
set new.id = new.username;
end if;
end
//
delimiter ;
Note that this only makes sense if both id and username have the same datatype (which is not obvious from their names).

How to update to other table when inserted into one table in mysql

I have two tables in mysql. One is create_load_test and another isload_test. I am inserting data into create_load_test table via html form. It is get updating.
There are 9 columns in create_load_test and 3 columns in load_test.
I want to update id and load_test column values of 'load_test' table, When a row is inserted in create_load_test table via html form.
How to do this? I know only basics of mysql.
Can you help me to solve this?
create_load_test:
load_test table:
try something like this using trigger.
CREATE TRIGGER `after_update_A` AFTER UPDATE ON `A` FOR EACH ROW
BEGIN
UPDATE TABLE B
SET username = NEW.username
, password = NEW.password
, email = NEW.email
WHERE id = NEW.id;
END $$
I have used like this, now it is working fine.
DELIMITER $$
CREATE TRIGGER triggered_from_createload
BEFORE insert ON create_load_test
FOR EACH ROW
BEGIN
INSERT INTO load_test
SET load_test.id = new.id,
load_test.loadtest = new.loadtest;
END$$
DELIMITER ;

Firing a MySQL trigger on existing table upon creation of trigger

I have a table with 2 columns named "Table1":
(Column 1 named "Col1" with the values: A,B,C,D,E,F)
(Column 2 named "Col2" with the values: 12,15,2,5,200,1).
I would like get all the values from column 2 to change to the value 1 if their value is lower than 100, so that column 2 will eventually look like this:
(Column 2 named "Col2" with the values: 1,1,1,1,200,1).
I tried to create a trigger:
delimiter //
CREATE TRIGGER Table1upd BEFORE UPDATE ON Table1
FOR EACH ROW
BEGIN
IF NEW.Col2<100 THEN
SET NEW.Col2=1;
END IF;
END;//
delimiter ;
When creating the trigger in MySQL workbench it says that the trigger was added but that 0 row(s) affected.
I assume my problem is with the BEFORE UPDATE choice, because the trigger does work when I update a value in the table, but I don't know what to change it to so that the trigger will also initially execute automatically when I create it.
Thank you in advance for any help,
D
The answer is simple: a BEFORE UPDATE trigger only triggers on UPDATE, so you need a second trigger BEFORE INSERT to cover both use cases: update and insert:
delimiter //
CREATE TRIGGER Table1insert BEFORE INSERT ON Table1
FOR EACH ROW
BEGIN
IF NEW.Col2<100 THEN
SET NEW.Col2=1;
END IF;
END;//
delimiter ;

How to track who changes a record in a table

I need to track who changes to a table in mySQL database. Would you please give me an idea how I can determine which of my application users makes changes to a record in a table?
I assume you have a table with 2 columns that their name is colmun1 and column2 You should add modified_by column and also add this trigger:
DELIMITER |
CREATE TRIGGER before_update_sometable
BEFORE UPDATE ON sometable FOR EACH ROW
BEGIN
IF (NEW.column1 <> OLD.column1 or NEW.column2 <> OLD.column2) THEN
NEW.modified_by = user();
END IF;
END;
|
DELIMITER ;

How to automatically update database fields with random values in MYSQL

I understand how to fill a field with random values, but I need my field to automatically update with a random value for each new column. For some reason, I'm having trouble figuring out how to do this.
By the way, as it says above, this is for a database in MySQL.
Thanks everyone
You can use a trigger to update a specific colum after insert like this:
DELIMITER |
CREATE TRIGGER randtrigger AFTER INSERT ON your_table
FOR EACH ROW BEGIN
UPDATE your_table SET some_column = rand()
WHERE id = NEW.id;
END;
|
DELIMITER ;