I do not think you can do this. An AFTER INSERT trigger cannot modify the same table, either by issuing UPDATE, or something like this:
DROP TRIGGER new_tbl_test; DELIMITER $$ CREATE TRIGGER new_tbl_test AFTER INSERT ON tbl_test for each row begin UPDATE tbl_test SET priority = new.id WHERE id = new.id; END $$ DELIMITER ;
It gives an error, for example
ERROR 1442 (HY000): Can't update table 'tbl_test' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
What you can do is use a transaction:
Example: table structure is similar to
mysql> show create table tbl_test\G *************************** 1. row *************************** Table: tbl_test Create Table: CREATE TABLE `tbl_test` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `title` char(30) DEFAULT NULL, `priority` int(11) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
Transaction
START TRANSACTION ; INSERT INTO tbl_test (title) VALUES ('Dr'); UPDATE tbl_test SET `priority` = id WHERE id = LAST_INSERT_ID(); COMMIT ;
Check data
mysql> SELECT * FROM tbl_test; +----+-------+----------+ | ID | title | priority | +----+-------+----------+ | 1 | Dr | 1 | +----+-------+----------+ 1 row in set (0.00 sec)
Abdul manaf
source share