我使用存储过程并在mysql v5.1中使用autocommit ON。
UPDATE client
SET `status` = '0', withdraw_date = NOW()
WHERE auth_token = p_auth_token;
UPDATE order
SET modate = NOW()
WHERE client_auth_token = p_auth_token AND `status` = '0';
//raise error no column client_auth_token
COMMIT;
调用存储过程时,引发错误,因为订单表中不存在client_auth_token
。顺便说一句,记录锁定到客户端表。为什么把锁定到客户端表而不是命令表?
答案 0 :(得分:0)
我认为这个问题与保留字order
有关。见the list of reserved words in mysql 5.1。
您需要在order
周围使用引号,就像您对status
所做的那样。根据文档:
关键字和保留字需要特殊处理才能用作表格和列名称等标识符。
UPDATE `order`
SET modate = NOW()
WHERE client_auth_token = p_auth_token AND `status` = '0';