#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 'DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEG' at line 1
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
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;
|
DELIMITER ;
Sorguyu phpmyadmin aracılığıyla Mysql 5.0.24a üzerinde deniyorum.
Sorun acaba mysql veriyonundan mı kaynaklanıyor? Bildiğim kadarıyla 5.0.2 den itibaren trigger desteği var.
phpmyadmin ilede alakalı değil tam. Mysql birden fazla komut içeren query'leri çalıştırmıyor. Delimineter hatası veriyor. DELIMITER komutu, komut ayracını değiştirmeye yarıyor. önce veri tabanına DELIMITER | komutunu gönderek bundan sonra komut sonlandırıcı olarak | kullanılacağını belirtiyor. Böylece trigger içine ; gönderebiliyor. Eğer delimiter komutunu kullanmazsanız trigger içinde geçen ; 'leri komut sonlandırıcı olarak algılardı.
Ama bu sorguyu dediğim gibi dosya.sql olarak kaydedip mysql veritabanına import ettiğimde sorunsuz çalışıyor. Sorguda yanlışlık varsa dosya ile yaptığımıızda da hata vermesi gerekmez miydi?