我面临的问题是 PhpMyAdmin 中的语法出现错误
这是我的代码
CREATE PROCEDURE `tambah_semua`(IN `Nama` VARCHAR(255), IN
`Plat_Nomor` VARCHAR(8), IN `Deskripsi` TEXT, IN `Total` INT) NOT
DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER INSERT INTO `User`
(`Nama`, `Plat_Nomor`,`Role`) VALUES (Nama, Plat_Nomor,4);
INSERT INTO `Booking`(`ID_User`, `Tanggal`, `Deskripsi`)
VALUES (
(SELECT `ID` FROM `User` WHERE `Nama` = Nama),
CURRENT_DATE,
Deskripsi
);
INSERT INTO `Transaksi`(`ID_Booking`, `Total`, `Lunas`)
VALUES (
(SELECT Booking.`ID` FROM User
LEFT JOIN Booking ON User.ID = Booking.ID_User
WHERE User.Nama = Nama AND Booking.Tanggal = CURRENT_DATE),
Total,
'Lunas'
);
出现这样的错误
以下查询失败:“CREATE PROCEDURE
> ...tambah_semua
MySQL 说:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'INSERT INTO
(Booking
,ID_User
,Tanggal
) 附近使用的正确语法 值( ' 在第 3 行Deskripsi
我没有看到第 3 行的主要问题,或者至少我不知道问题所在,我只是与 GPT 和 Gemini 交谈,但到目前为止没有任何效果
我之前所做的可能是 ID_User 无法定义得那么快,所以我首先使用声明来存储变量,然后在表的其余部分(如 booking 和 transaksi)上使用它,但它仍然不起作用
我现在知道错误了
这是因为我只想立即分配值,所以为了修复它,我首先使用变量来存储它,然后
DROP PROCEDURE `tambah_semua`; CREATE DEFINER=`timta2024`@`localhost`
PROCEDURE `tambah_semua`(IN `Nama` VARCHAR(255), IN `Plat_Nomor` VARCHAR(8),
IN `Deskripsis` TEXT, IN `Total` INT) NOT DETERMINISTIC CONTAINS SQL SQL
SECURITY DEFINER BEGIN DECLARE user_id INT; DECLARE book_id INT;
-- Insert new user INSERT INTO `User` (`Nama`, `Plat_Nomor`, `Role`) VALUES
(Nama, Plat_Nomor, 4); -- Get the newly inserted user ID SELECT
LAST_INSERT_ID() INTO user_id; -- Insert into Booking table INSERT INTO
`Booking` (`ID_User`, `Tanggal`, `Deskripsi`) VALUES (user_id, CURRENT_DATE,
Deskripsis); -- Get the newly inserted booking ID SELECT LAST_INSERT_ID() INTO
book_id; -- Insert into Transaksi INSERT INTO `Transaksi`(`ID_Booking`,
`Total`, `Lunas`) VALUES (book_id, Total, 'Lunas'); END