在 PHPMyAdmin 中使用多重插入的程序失败

问题描述 投票:0回答:1

我面临的问题是 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
,
Deskripsi
) 附近使用的正确语法 值( ' 在第 3 行

我没有看到第 3 行的主要问题,或者至少我不知道问题所在,我只是与 GPT 和 Gemini 交谈,但到目前为止没有任何效果

我之前所做的可能是 ID_User 无法定义得那么快,所以我首先使用声明来存储变量,然后在表的其余部分(如 booking 和 transaksi)上使用它,但它仍然不起作用

sql mysql phpmyadmin
1个回答
0
投票

我现在知道错误了

这是因为我只想立即分配值,所以为了修复它,我首先使用变量来存储它,然后

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.