【发布时间】:2015-05-11 22:59:17
【问题描述】:
我将这个作为我的pension_accounts 表的表结构,并在我的第二个表pension_statement 表的结构下方从表pension_accounts AFTER UPDATE 触发器中进行选择
Table structure for table `pension_accounts`
CREATE TABLE IF NOT EXISTS `pension_accounts` (
`User_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Title` varchar(500) NOT NULL,
`Surname` varchar(500) NOT NULL,
`Firstname` varchar(500) NOT NULL,
`Other_names` varchar(500) NOT NULL,
`DOB` varchar(500) NOT NULL,
`Gender` varchar(500) NOT NULL,
`MaritalStatus` varchar(500) NOT NULL,
`City` varchar(500) NOT NULL,
`State` varchar(500) NOT NULL,
`Nationality` varchar(500) NOT NULL,
`Country` varchar(500) NOT NULL,
`Email` varchar(500) NOT NULL,
`Mobile` varchar(500) NOT NULL,
`Address` varchar(500) NOT NULL,
`AccountType` varchar(500) NOT NULL,
`PASSWORD` varchar(500) NOT NULL,
`ACCOUNT_NUMBER` varchar(500) NOT NULL DEFAULT '',
`CountryCode` varchar(500) NOT NULL,
PRIMARY KEY (`User_id`),
UNIQUE KEY `Surname` (`Surname`,`Firstname`,`PASSWORD`),
UNIQUE KEY `Email` (`Email`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
DROP TRIGGER IF EXISTS `before_update_pension_accounts`;
DELIMITER //
CREATE TRIGGER `before_update_pension_accounts` BEFORE UPDATE ON `pension_accounts`
FOR EACH ROW SET new.Modified_DateTime = CURRENT_TIMESTAMP
//
DELIMITER ;
第二张表`
表pension_statement的表结构
CREATE TABLE IF NOT EXISTS `statement` (
`StatementID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Statement_Surname` varchar(500) NOT NULL,
`Statement_Firstname` varchar(500) NOT NULL,
`Statement_ACCOUNT_NUMBER` varchar(500) NOT NULL,
`Statement_Balance` varchar(500) NOT NULL,
`Statement_Modified_DateTime` varchar(500) NOT NULL,
`Statement_Description` varchar(500) NOT NULL,
`Statement_CurrencyType` varchar(500) NOT NULL,
PRIMARY KEY (`StatementID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
问题:
我尝试向该触发器添加一条 INSERT 语句以在 pension_statement 中插入一行,但它失败了;
DROP TRIGGER IF EXISTS `statement_history`;
DELIMITER //
CREATE TRIGGER `statement_history` AFTER UPDATE ON `pension_accounts`
FOR EACH ROW INSERT INTO `pension_statement` (`StatementID`, `Statement_Surname`, `Statement_Firstname`, `Statement_ACCOUNT_NUMBER`, `Statement_Balance`, `Statement_Modified_DateTime`) VALUES (NULL, 'new.Statement_Surname', 'new.Statement_Firstname', 'new.Statement_ACCOUNT_NUMBER', 'new.Statement_Balance', 'new.Statement_Modified_DateTime')
//
DELIMITER ;
它返回这个值:
'new.Statement_Surname', 'new.Statement_Firstname', 'new.Statement_ACCOUNT_NUMBER', 'new.Statement_Balance', 'new.Statement_Modified_DateTime'
【问题讨论】:
-
您的问题/问题是什么?
-
您可以将语句添加到现有触发器。当前触发器是否有效,用于设置 TIMESTAMP?您可以向该触发器添加一条 INSERT 语句,以便在第二个表中插入一行。
-
@dubstylee 是的,触发器工作正常,我只需要知道如何向该触发器添加一个 INSERT 语句,以便在第二个表中插入一行。
-
您可以通过将 then 括在
begin...end块中来创建复合语句 -
@pala_ 它没有选择插入到行中的内容以便重新插入到表中 Pension_statement