2016-07-28 86 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,我必须用另一个参数发送这个值。 –

相关问题