所以这就是伙计们,
我有四张桌子。
我的第一个:
CREATE TABLE IF NOT EXISTS `Users` (
`Id_User` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`Firstname` varchar(20) NOT NULL,
`Lastname` varchar(20) NOT NULL,
PRIMARY KEY (`Id_User`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1002 ;
它包含了人们的数据。
我的第二个:
CREATE TABLE IF NOT EXISTS `Subject` (
`PrimaryKey_Subject` varchar(4) NOT NULL,
`Subject_Name` int(5) NOT NULL,
PRIMARY KEY (`PrimaryKey_Subject`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
它包含主题名称:数学,科学,生物学等...
我的第三个:
CREATE TABLE IF NOT EXISTS `Register` (
`ForeignKey_User` smallint(5) unsigned NOT NULL,
`ForeignKey_Lesson` varchar(4) NOT NULL,
PRIMARY KEY (`ForeignKey_User`,`ForeignKey_Lesson`),
KEY `ForeignKey_User_I` (`ForeignKey_User`),
KEY `ForeignKey_Lesson` (`ForeignKey_Lesson`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这个允许用户注册课程。
我的第四个:
CREATE TABLE IF NOT EXISTS `Subject_Annex` (
`PrimaryKey_Subject` varchar(4) NOT NULL,
`Number_Registered` int(5) NOT NULL,
PRIMARY KEY (`PrimaryKey_Subject`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
就是这样,
每次有人注册课程时,如何设置一个增加 Number_Registered 的触发器?
例如,
我创建了一个用户:John Doe - > 用户表。
我现在可以通过注册表注册我的新创建的用户到一个主题:让我们说科学
然后现在我们有 Subject_Annex表,通过触发器,并且一旦我的用户(John Doe)链接到一个主题,(科学),应该能够显示从(这里是科学)注册到主题的用户数量,并且还增加1他们的每次有人注册此主题时的号码。
所以简而言之,
如何设置一个触发器,每当有人注册某个主题时,该触发器会增加注册的用户数量?
例如:
(其他人注册)
(其他人注册)
已注册人数:2
主要主题:数学
等等...
答案 0 :(得分:-1)
我设法自己解决了这个问题:
DELIMITER |
create trigger before_insert_subject_annexe
before INSERT
on Register
for each row
BEGIN
INSERT INTO Subject_Annex (PrimaryKey_Subject, Number_Registered)
VALUES (NEW.ForeignKey_Lesson, + 1)
ON DUPLICATE KEY UPDATE
Number_Registered=Number_Registered+1;
END;
DELIMITER |
然后在我的Subjet_Annex表:
CREATE TABLE IF NOT EXISTS `Subject_Annex` (
`PrimaryKey_Subject` varchar(4) NOT NULL,
`Number_Registered` int(5) NOT NULL,
PRIMARY KEY (`PrimaryKey_Subject`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我在 Number_Registered
上添加了一个唯一键