2016-07-28 96 views
0

您好,我有以下觸發:如何發送一個MySQL參數

CREATE TRIGGER `update` AFTER UPDATE ON `table 1` 
FOR EACH ROW INSERT INTO table 2 (
Id, 
Revision, 
Purpose, 
Change 
) 
VALUES 
(
OLD.Id, 
OLD.Revision, 
OLD.Purpose, 
@purpose_change /* user variable */ 
); 

$$ DELIMITER;

我使用C#WebService,Ajax和JavaScript。這裏是我的更新C#方法(目前不工作)

"UPDATE table 1 SET [email protected], [email protected], @[email protected] WHERE (Id [email protected])"; 

這裏開始的問題,因爲我不知道到底如何發送@purpose_channge。

這是我的Web方法。

[WebMethod(EnableSession = true)] 
public string ActualizarAlerta(int id, string revision, string purpose, string change, int op) 
{ 
    string respuesta = "An Error Has Ocurred."; 
    try 
    { 
     UpdateAlert ua = new UpdateAlert(id, revision, purpose, change); 

     int resp = conn.UpdateAlerta(ua, op); 

     if (resp > 0) 
      respuesta = "Works!."; 
    } 
    catch (Exception ex) 
    { 
     respuesta = "An Error Has Ocurred: " + ex.Message; 
    } 
    return respuesta; 
} 

這裏是我的AJAX調用JavaScript。

$.ajax({ 
    type: "POST",    
    url: urlServer + "ws_alerts.asmx/ActualizarAlerta",      
    data: '{' + 
     '"id":' + id + 
     ',"revision":"' + rev + 
     '","purpose":"' + pur +   
     '","change":"' + change + 
     '","op":' + op + '}',  
    dataType: "json",    
    contentType: "application/json",   
    timeout: 60000,  
    error: function (xhr) { 
     bootbox.alert("Ocurrio un error al procesar la peticion."); 
    }, 
    success: function (data) { 
     bootbox.alert(data.d); 
    } 
}); 

ID,轉,改等都是$(「#身份識別碼」)。VAL()

我知道所有的問題在更新查詢,但我不知道該怎麼做正確的,我該怎麼做?

+0

這'@ purpose_change = @ change'在你的update語句是錯誤的,'UPDATE'需要將列設置爲一個值。 – Habib

+0

不應該是改變= @purpose_change – Steve

+0

我知道,但表1沒有更改字段,更改只存在於表2. –

回答

0

這是一個MySQL用戶變量,則必須前UpdateAlerta()

SqlCommand cmd = new SqlCommand("set @purpose_change = 'Purpose change to 1';", conn); 
cmd.ExecuteNonQuery(); 

PS運行原始查詢(我記得另一個相關的問題here

+0

相關問題其礦山,這裏的問題是,我不能發送一個特定的值@ purpose_change,我必須用另一個參數發送這個值。 –