以下是我的表模式:使用多线两列组合成一个触发器在MySQL
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| LicenceID | int(11) | NO | PRI | NULL | |
| PassingRTO | varchar(4) | NO | | NULL | |
| DLNO | int(15) | YES | | NULL | |
| DateOfIssue | date | NO | | NULL | |
| DateOfExpiry | date | NO | | NULL | |
| COV | varchar(6) | NO | | NULL | |
| DateOfBirth | date | NO | | NULL | |
| BloodGroup | varchar(3) | YES | | NULL | |
| FullName | varchar(50) | NO | | NULL | |
| FathersName | varchar(50) | YES | | NULL | |
| Address | varchar(150) | NO | | NULL | |
| PinCode | int(6) | NO | | NULL | |
| IssuingAuth | int(7) | NO | | NULL | |
| IDIA | int(11) | YES | | NULL | |
| Valid | tinyint(4) | NO | | NULL | |
+--------------+--------------+------+-----+---------+-------+
什么我想要做的是,当我插入新行,我希望我的DLNO作为PassingRTO + LicenceID和IDIA作为PassingRTO + IssuingAuth。
我尝试使用相同的 -
create trigger insert_combined
after insert on LicencesDB
for each row
BEGIN
set new.IDIA = concat(new.PassingRTO, new.IssuingAuth);
set new.DLNO = concat(new.PassingRTO,new.LicenceID);
END;
,但给了我一个错误 -
ERROR 1362(HY000):新行的更新是不允许在后 触发ERROR 1193( HY000):未知的系统变量“DLNO”错误1064 (42000):您的SQL语法有错误;检查手册中 对应于你的MySQL服务器版本正确的语法在行使用 附近“END” 1
现在我有两个问题,我们可以做这个触发器使用多行?我们不能在创建表本身时组合两列吗?像col1 = col2 + col3?
在此先感谢!
对不起,我对分隔符没有任何意见,请您解释一下吗? – Shashank 2013-04-22 09:33:13
对不起我的坏..忘了改变列的dataType!现在工作好了! :) – Shashank 2013-04-22 10:46:50