各位大神好,小弟最近練習JDBC的新增、修改、刪除、查詢,但遇到了"無法新增"的問題,其他3個功能都可以正常操作,想詢問大神們我的程式有什麼問題嗎?
Maven專案
Mysql版本: 8.0.26
Java version: 1.8.0_301
SQL指令:
https://drive.google.com/file/d/1zmoA9Hy8F84iHuVIOMFyJ3Hy8Q43nXaY/view?usp=sharing
CREATE TABLE MANAGER (
MG_no VARCHAR(20) NOT NULL PRIMARY KEY DEFAULT '0',
MG_email VARCHAR(20) NOT NULL,
MG_password VARCHAR(20) NOT NULL,
MG_name VARCHAR(20) NOT NULL,
MG_title VARCHAR(20) NOT NULL,
MG_spec VARCHAR(45),
Line_id VARCHAR(20) ,
Line_url VARCHAR(20) ,
MG_createtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
MG_updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
);
INSERT INTO MANAGER
(MG_no,MG_email, MG_password, MG_name, MG_title, MG_spec, Line_id, Line_url)
SELECT CONCAT('MG', LPAD(SUBSTRING(IFNULL(MAX(MG_no),'00000'),3,3)+1, 3, '0')) ,
'123456@gmail.com', '123456', '大翔', '老闆', null, '123456', null FROM MANAGER;
INSERT INTO MANAGER
(MG_no,MG_email, MG_password, MG_name, MG_title, MG_spec, Line_id, Line_url)
SELECT CONCAT('MG', LPAD(SUBSTRING(IFNULL(MAX(MG_no),'00000'),3,3)+1, 3, '0')) ,
'654321@gmail.com', '654321', '小翔', '小編', null, null, null FROM MANAGER;
或是用原 SQL 修改
Demo (更新)
CREATE TRIGGER tg_MANAGER_insert BEFORE INSERT ON MANAGER
FOR EACH ROW
BEGIN
INSERT INTO MANAGER_seq VALUES (NULL);
SET NEW.MG_no = CONCAT('MG', LPAD(LAST_INSERT_ID(), 3, '0'));
END
最後一個 END 後面不要有【;】
請參閱 : MySQL Workbench : How to Configure Triggers in MySQL
請問大神:
END is not valid at this position, expecting EOF, ...
的錯誤。1.【未使用 CREATE TRIGGER】:
修改 Manager JDBC DAO 內的新增的 SQL,語法同(第一個Demo)
2.【使用 CREATE TRIGGER】:
請參閱上面的(更新)及說明
3.主要是 CREATE TRIGGER 沒成功,因此新增時沒產生新的 MG_no 只用預設值 '0' ,只產生(第一次)新增的資料;
當(第二次)新增時 MG_no 依舊只用預設值 '0' ,MG_no PRIMARY KEY ,所以無法寫入,
也就是海綿寶寶說的 「新增的資料鍵值((primary) index)重覆」。
大神你好,我目前嘗試使用你提供的2種sql寫法,但我的test.java還是無法新增資料。
找到問題答案了,原來是我的Test.java有問題。謝謝大神
新增、修改、刪除、查詢,但遇到了"無法新增"的問題,其他3個功能都可以正常操作
不看程式用猜的
「新增的資料鍵值((primary) index)重覆」