【问题标题】:creating triggers with MySQL使用 MySQL 创建触发器
【发布时间】:2015-03-01 21:44:33
【问题描述】:

两个表:用户和消息

 CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(10) NOT NULL,
`password` varchar(10) NOT NULL,
`email` varchar(100) NOT NULL,
`verifystring` varchar(20) NOT NULL,
`active` tinyint(4) NOT NULL,
`usertype` tinyint(4) NOT NULL,
`img` varchar(200) DEFAULT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

 CREATE TABLE IF NOT EXISTS `messages` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL,
`user_id` int(11) NOT NULL,
`topic_id` int(11) NOT NULL,
`subject` varchar(100) NOT NULL,
`body` text NOT NULL,
`img` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
 KEY `topic_id` (`topic_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=51 ;

触发器:

CREATE TRIGGER `updateimg` AFTER UPDATE ON `users`
 FOR EACH ROW begin
    update messages set img = new.img where messages.user_id = users.id;
end

img 字段保存用户上传的图像的名称。 更新时如何将值 img 从表用户复制到表消息?

【问题讨论】:

    标签: php mysql triggers phpmyadmin


    【解决方案1】:

    应该这样做:

    CREATE TRIGGER update AFTER UPDATE ON table1
        for each ROW
        begin
            update table2 set y = new.y where table2.user_id = new.id;
        end
    

    【讨论】:

    • 正在创建触发器,但它不起作用。为什么它不允许我指定 UPDATE ON table.y?
    • 您是否收到错误消息?你的问题是什么意思?
    • 没有错误,但值没有更新。我的意思是我希望仅在表 1 中的 Y 值更新时才执行触发器。那么为什么它不允许 UPDATE ON Table1.y 呢?
    • 我刚刚更新了答案,现在是table2.id = new.id
    • 还是不行,你想让我用数据库的截图更新问题吗?
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2016-09-19
    • 1970-01-01
    • 2015-02-23
    • 2018-10-31
    • 1970-01-01
    • 2013-07-16
    • 2013-05-30
    相关资源
    最近更新 更多