CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);
DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END
|
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO test2 SET a2 = NEW.a1' at line 3
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO test2 SET a2 = NEW.a1
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO test2 SET a2 = NEW.a1 DELETE FROM test3 WHERE a3 = NEW.a1 ' at line 3
Date :
16 พ.ย. 2548 05:48:17
By :
nut_t02
No. 2
Guest
รู้สึกคำสั่ง sql จะพิมพ์ไม่ถูก การสร้างตาราง ตรง int ที่เคยทำต้องกำหนดขนาดด้วยนะครับ ส่วนตัวอื่น
ลองรัน ดูทีละตัวครับแก้ทีละข้อดีกว่า
ผมแก้แล้วใส่อยางนี้ ไม่มีปัญหาเลย
====================================
Drop Table If Exists `test1`;
CREATE TABLE test1(a1 INT);
Drop Table If Exists `test2`;
CREATE TABLE test2(a2 INT);
Drop Table If Exists `test3`;
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Drop Table If Exists `test4`;
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
INSERT INTO test3 (a3) VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
INSERT INTO test4 (a4) VALUES (0),(0),(0),(0),(0),(0);
====================================================
ผิดพลาด
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH
ROW BEGIN
INSERT INTO test2
SET a2 = NEW.a1
MySQL แสดง:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO test2 SET a2 = NEW.a1' at line 3
ปัญหาเวลา INSERT INTO แบบนี้ ( ปัญหาโลกแตก )
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
วิธีแก้
อธิบายก่อนนะครับ คือมันบอกให้เราตรวจสอบการเขียน ให้เปิดดูคู่มือ แต่จริง ๆ ไม่ใช่ มันได้ได้เป็นที่ คำสั่ง
INSERT INTO เลย ปัญหามันคือ เป็นที่ฐานข้อมูลเรา
ลองตรวจสอบดูว่า ชื่อฐานข้อมูล ชื่อตาราง ชื่อฟิลล์ มันตรงกับคำ สงวนที่ห้ามใช้หรือเปล่า เช่น teble ห้ามใช้
เราก็เปลี่ยนใหม่ซะ เป็น teble_001 ก็ได้