在更新期间为我的查询锁定表格?

时间:2012-05-15 13:01:11

标签: mysql sql

我正在使用mysql 5.5.22。 有时候我需要从某个地方获取一些数据,而这个地方就是系统表。

E.g:

我有这个问题(由我的同事写的):

UPDATE _x_eia_marcatura AS X, A_EVENTS AS E 
SET X.kind = E.kind, X.ref_id = E.ref_id 
WHERE E.DELIVERY_ID=49 AND E.kind='c' AND E.ref_id = 69 
AND X.MAILQ_ID = E.MAILQ_ID;

现在,如果您不小心写了E.kind = X.kind,那么您正在更新系统表。有没有办法告诉mysql“如果我正在更新表格E然后不做任何事情”?

我知道这个别名命名惯例很糟糕但它让我觉得可能有办法做我建议的事情。

1 个答案:

答案 0 :(得分:3)

如果它是一个全局的“永不插入此表”的东西,或者可能是触发器,你可以使用权限。

一般来说,没有。代码通常被认为是“可信的”,因此无论它要求什么都被认为是可接受的。如果您真的需要这个,那么您应该调查存储过程并且只允许通过这些更改数据库。