Phpmyadmin 不接受 MySQL 触发器
Phpmyadmin doesn't accept MySQL trigger
我正在尝试使用 Phpmyadmin 创建触发器,但我的触发器一直被拒绝。
假设有这些表:
新闻(代码等)
学生(代码等)
老师(代码等)
课程(代码等)
新闻列表(新闻代码、教师代码、课程代码)
StudsCoursesList (StudentCode, CourseCode)
等等,但这些是我在这个触发器中使用的。
代码如下:
DELIMITER //
CREATE TRIGGER newNews
AFTER INSERT
ON News FOR EACH ROW
BEGIN
SET @news = (SELECT MAX(Code) FROM News);
SET @course = (SELECT CourseCode FROM NewsList WHERE NewsCode=@news);
SET @cod = (SELECT TeacherCode FROM NewsList WHERE NewsCode=@news);
SET @studs = (SELECT StudentCode FROM StudsCoursesList WHERE Course=@course);
SET @i = 0;
WHILE @i < COUNT(@studs)
{
INSERT INTO Inbox(Sender, Receiver, Object, Content, Date) VALUES (@cod, @i, @studs[i], "", CURDATE());
i++;
}
END; //
DELIMITER ;
Phpmyadmin 显示此消息:
1064 - 你的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 '{
附近使用的正确语法
INSERT INTO Inbox(Sender, Receiver, Object, Content, Date) VALUES (' 在第 12 行
我不明白这是什么问题。在指出日期可能会发生冲突之前,它只是翻译成英文,在我的语言中我使用数据。
抱歉,MySQL 语法没有大括号,您的 WHILE
缺少 DO
.
将 WHILE
循环更改为
WHILE @i < COUNT(@studs) DO
INSERT INTO Inbox(Sender, Receiver, Object, Content, Date) VALUES (@cod, @i, @studs[i], "", CURDATE());
@i = @i + 1;
END WHILE; //
您的错误消息表明它与 WHILE 语句有关。您使用的是花括号,SQL.
中没有使用这些花括号
尝试将其更改为:
WHILE @i < COUNT(@studs) DO INSERT ..... END WHILE
我正在尝试使用 Phpmyadmin 创建触发器,但我的触发器一直被拒绝。
假设有这些表:
新闻(代码等)
学生(代码等)
老师(代码等)
课程(代码等)
新闻列表(新闻代码、教师代码、课程代码)
StudsCoursesList (StudentCode, CourseCode)
等等,但这些是我在这个触发器中使用的。
代码如下:
DELIMITER //
CREATE TRIGGER newNews
AFTER INSERT
ON News FOR EACH ROW
BEGIN
SET @news = (SELECT MAX(Code) FROM News);
SET @course = (SELECT CourseCode FROM NewsList WHERE NewsCode=@news);
SET @cod = (SELECT TeacherCode FROM NewsList WHERE NewsCode=@news);
SET @studs = (SELECT StudentCode FROM StudsCoursesList WHERE Course=@course);
SET @i = 0;
WHILE @i < COUNT(@studs)
{
INSERT INTO Inbox(Sender, Receiver, Object, Content, Date) VALUES (@cod, @i, @studs[i], "", CURDATE());
i++;
}
END; //
DELIMITER ;
Phpmyadmin 显示此消息:
1064 - 你的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 '{
附近使用的正确语法INSERT INTO Inbox(Sender, Receiver, Object, Content, Date) VALUES (' 在第 12 行
我不明白这是什么问题。在指出日期可能会发生冲突之前,它只是翻译成英文,在我的语言中我使用数据。
抱歉,MySQL 语法没有大括号,您的 WHILE
缺少 DO
.
将 WHILE
循环更改为
WHILE @i < COUNT(@studs) DO
INSERT INTO Inbox(Sender, Receiver, Object, Content, Date) VALUES (@cod, @i, @studs[i], "", CURDATE());
@i = @i + 1;
END WHILE; //
您的错误消息表明它与 WHILE 语句有关。您使用的是花括号,SQL.
中没有使用这些花括号尝试将其更改为:
WHILE @i < COUNT(@studs) DO INSERT ..... END WHILE