如何解决如何在phpMyAdmin中创建触发器?
我不习惯phpMyAdmin;我只是想添加一个简单的触发器来检查成员插入我的表后是否具有正确的配置文件... 这是我的代码:
```
CREATE TRIGGER TR_must_be_coach ON classe
AFTER INSERT
AS
BEGIN
DECLARE @tmp table(coach_ID INT)
INSERT INTO @tmp
SELECT coach_ID
FROM inserted
WHERE coach_ID IN (
SELECT ID
FROM member
WHERE profile_ID IN (
SELECT ID
FROM profile
WHERE ID > 2
)
)
IF EXISTS (SELECT * FROM @tmp)
BEGIN
SELECT * FROM @tmp
RAISERROR('must be coach to teach classes',12,1)
ROLLBACK
END
END
```
这是三个表: ->上课
CREATE TABLE `classe` (
`ID` int(11) NOT NULL,`start_on` date NOT NULL,`duration` time NOT NULL,`coach_ID` int(11) NOT NULL,`booking_ID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `classe`
ADD PRIMARY KEY (`ID`),ADD KEY `fk_booking_ID` (`booking_ID`),ADD KEY `fk_coach_id` (`coach_ID`);
ALTER TABLE `classe`
MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `classe`
ADD CONSTRAINT `fk_booking_ID` FOREIGN KEY (`booking_ID`) REFERENCES `booking` (`ID`),ADD CONSTRAINT `fk_coach_id` FOREIGN KEY (`coach_ID`) REFERENCES `membre` (`ID`);
COMMIT;
->成员
CREATE TABLE `membre` (
`ID` int(11) NOT NULL,`lastname` varchar(32) NOT NULL,`firstname` varchar(32) NOT NULL,`email` varchar(56) NOT NULL,`profile_ID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `membre`
ADD PRIMARY KEY (`ID`),ADD KEY `fk_profile_ID` (`profile_ID`);
ALTER TABLE `membre`
MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `membre`
ADD CONSTRAINT `fk_ID_profile` FOREIGN KEY (`profile_ID`) REFERENCES `profile` (`ID`);
COMMIT;
->个人资料
CREATE TABLE `profile` (
`ID` int(11) NOT NULL,`description` varchar(16) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `profile` (`ID`,`description`) VALUES
(2,'coach'),(4,'guest'),(1,'manager'),(3,'player');
ALTER TABLE `profile`
ADD PRIMARY KEY (`ID`),ADD UNIQUE KEY `description` (`description`);
COMMIT;
为正确起见,coach_ID必须具有profile_ID
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。