2016-04-07 15 views
0

kullanma hakkı sözdizimi için MySQL sunucu sürümü ile uyumlu kılavuzu BBKodHATA 1064 (42000): yakın 'SON' Burada

i masaya ekleme sonra bir tetikleyici oluşturmak çalışıyorum

olduğunu söylemek ürün bir değişiklik Traker tabloya tablo bu

DELIMITER // 
    CREATE TRIGGER product_table_after_insert 
    AFTER INSERT 
    ON product_table FOR EACH ROW 

    BEGIN 

    DECLARE l_product_description varchar(500); 
    DECLARE l_product_number int; 
    set @l_table_name = 'product_table'; 
    set @l_action = 'INSERT'; 
    set @l_table_column = 'all columns'; 
    set @l_description = 'new row inserted'; 

    select p.product_description ,p.product_number into @l_product_description, @l_product_number from product_table p where p.product_description = (select max(pg.product_number)from product_table pg); 
    -- Insert record into audit table 
     INSERT INTO audit_table_test 
    (table_name, 
    changed_row_id, 
    action, 
    table_column, 
    change_desciption, 
    change_time 
    ) 
    VALUES 
    (l_table_name, 
     l_product_number, 
     l_action, 
     l_table_column, 
     l_description, 
     SYSDATE() 
     ) 
    END 
    // 
    DELIMITER ; 

böyle

i tüm bu yolları denedik i

alıyorum hatadır tablo denetim denilen

, |, S vb yerine // ve bitiminden sonra

kaldırıldı ;

kullanılan bir araya // veya \ veya $$ yerleştirilir ve ucunun altına hiçbir şey inşaat

, bazı biri bana

ERROR 1064 (42000): 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 'END' at line 32 
yardım lütfen

bir tane lütfen bana yardım edin

+1

bir 'ekleyin aşağıda başına olmalıdır;' onun yetkilinin evet –

+0

('Sonu 'öncesi) insert deyiminden sonra! Ben d en büyük seçkin aptalım !!!!! – Mukund

+0

basit bir hata, sadece bir semicolumn gerekli, üzgünüm – Mukund

cevap

1

Yorumlar içinde @juergen tarafından sağlanan çözüm, iyi çalışıyor, yani, Ekleme ifadesinden sonra (0'dan önce) ; ekleyin Hatamı bulduğunuz için teşekkür ederiz. Cevap burada yani yaklaşık 4 saat boyunca bunun arıyordu:

DELIMITER // 
CREATE TRIGGER product_table_after_insert 
    AFTER INSERT 
    ON product_table 
    FOR EACH ROW 

    BEGIN 

    DECLARE l_product_description varchar(500); 
    DECLARE l_product_number int; 
    set @l_table_name = 'product_table'; 
    set @l_action = 'INSERT'; 
    set @l_table_column = 'all columns'; 
    set @l_description = 'new row inserted'; 

    select p.product_description ,p.product_number 
     into @l_product_description, @l_product_number 
     from product_table p 
     where p.product_description = 
     (select max(pg.product_number) 
      from product_table pg); 
    -- Insert record into audit table 
    INSERT INTO audit_table_test 
     (table_name, 
      changed_row_id, 
      action, 
      table_column, 
      change_desciption, 
      change_time 
     ) 
     VALUES 
     (l_table_name, 
      l_product_number, 
      l_action, 
      l_table_column, 
      l_description, 
      SYSDATE() 
     ); //<<---- Semicolon needed to be here 
    END 
    // 
DELIMITER; 
1
  1. Yeri sql sonlandırıcı ";" tablo ifadesini oluşturduktan sonra
  2. kaldır ";" son sınırdan sonra.

Yani kod

DELIMITER // 
    CREATE TRIGGER product_table_after_insert 
    AFTER INSERT 
    ON product_table FOR EACH ROW 

    BEGIN 

    DECLARE l_product_description varchar(500); 
    DECLARE l_product_number int; 
    set @l_table_name = 'product_table'; 
    set @l_action = 'INSERT'; 
    set @l_table_column = 'all columns'; 
    set @l_description = 'new row inserted'; 

    select p.product_description ,p.product_number into @l_product_description, @l_product_number from product_table p where p.product_description = (select max(pg.product_number)from product_table pg); 
    -- Insert record into audit table 
     INSERT INTO audit_table_test 
    (table_name, 
    changed_row_id, 
    action, 
    table_column, 
    change_desciption, 
    change_time 
    ) 
    VALUES 
    (l_table_name, 
     l_product_number, 
     l_action, 
     l_table_column, 
     l_description, 
     SYSDATE() 
     ); 
    END 
    // 
    DELIMITER 
+0

hayır benim soru içinde her şey doğru değil ekleme deyim sonunda bir noktalı virgül cevapsız dışında – Mukund

İlgili konular