2

私はmysql 5.5.22を使用しています。ときどきどこかからデータを取得する必要があり、これはシステム テーブルです。

例えば:

私はこのクエリを持っています (私の同僚によって書かれました):

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 を更新している場合は何もしない」ように指示する方法はありますか?

このエイリアスの命名規則がくだらないことはわかっていますが、私が提案したことを行う方法があるのではないかと思いました。

4

1 に答える 1

3

それがグローバルな「このテーブルに挿入しない」こと、またはおそらくトリガーである場合は、アクセス許可を使用できます。

一般的に言えば、いいえ。コードは通常「信頼できる」と見なされるため、コードが要求するものは何でも受け入れられると見なされます。これが本当に必要な場合は、ストアド プロシージャを調査し、これらによるデータベースの変更のみを許可する必要があります。

于 2012-05-15T13:25:34.040 に答える