Bug #18196 | before insert trigger fires too late | ||
---|---|---|---|
Submitted: | 13 Mar 2006 16:55 | Modified: | 2 Jun 2006 5:47 |
Reporter: | Roland Volkmann | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.0.18-nt/5.1BK | OS: | Windows (WinXP/linux) |
Assigned to: | Assigned Account | CPU Architecture: | Any |
[13 Mar 2006 16:55]
Roland Volkmann
[14 Mar 2006 0:10]
MySQL Verification Team
Thank you for the bug report. It happens also with MyISAM engine and the error instead of a warning is according the sql_mode. However I was not able for to find a restriction for triggers in our manual mentioning that behavior: c:\mysql\bin>mysql -uroot test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 5.0.19-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select @@sql_mode; +----------------------------------------------------------------+ | @@sql_mode | +----------------------------------------------------------------+ | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +----------------------------------------------------------------+ 1 row in set (0.33 sec) mysql> create table ttt (id integer, info varchar(20) not null); Query OK, 0 rows affected (0.56 sec) mysql> show create table ttt\G *************************** 1. row *************************** Table: ttt Create Table: CREATE TABLE `ttt` ( `id` int(11) default NULL, `info` varchar(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.23 sec) mysql> create trigger tr_ttt_bi before insert on ttt for each row set new.info -> := 'Hello'; Query OK, 0 rows affected (0.53 sec) mysql> insert into ttt (id) values (1); ERROR 1364 (HY000): Field 'info' doesn't have a default value mysql> set sql_mode=""; Query OK, 0 rows affected (0.23 sec) mysql> insert into ttt (id) values (1); Query OK, 1 row affected, 1 warning (0.39 sec) mysql> show warnings\G *************************** 1. row *************************** Level: Warning Code: 1364 Message: Field 'info' doesn't have a default value 1 row in set (0.25 sec) mysql> select * from ttt; +------+-------+ | id | info | +------+-------+ | 1 | Hello | +------+-------+ 1 row in set (0.25 sec) c:\mysql\bin>mysql -uroot test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 5.0.19-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create table ttt (id integer, info varchar(20) not null) -> engine=MyISAM; Query OK, 0 rows affected (0.56 sec) mysql> show create table ttt\G *************************** 1. row *************************** Table: ttt Create Table: CREATE TABLE `ttt` ( `id` int(11) default NULL, `info` varchar(20) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 1 row in set (0.24 sec) mysql> create trigger tr_ttt_bi before insert on ttt for each row set new.info -> := 'Hello'; Query OK, 0 rows affected (0.31 sec) mysql> insert into ttt (id) values (1); ERROR 1364 (HY000): Field 'info' doesn't have a default value mysql>
[15 Mar 2006 22:34]
MySQL Verification Team
Bug: http://bugs.mysql.com/bug.php?id=18262 was marked as duplicate of this one.
[2 Jun 2006 5:47]
Ramil Kalimullin
Thanks for the report. It's a known issue and won't be fixed in 5.0. See #6295: Triggers are not processed for NOT NULL columns