動作しない私はELMAHテーブルのエラーを格納するために、このストアドプロシージャがあります。このDELETE文は
CREATE DEFINER=`b4d7eb33be6399`@`%` PROCEDURE `elmah_LogError`(
IN ErrorId CHAR(36),
IN Application varchar(60),
IN Host VARCHAR(30),
IN Type VARCHAR(100),
IN Source VARCHAR(60),
IN Message VARCHAR(500),
IN User VARCHAR(50),
IN AllXml TEXT,
IN StatusCode INT(10),
IN TimeUtc DATETIME
)
MODIFIES SQL DATA
BEGIN
INSERT INTO `elmah_error` (
`ErrorId`,
`Application`,
`Host`,
`Type`,
`Source`,
`Message`,
`User`,
`AllXml`,
`StatusCode`,
`TimeUtc`
) VALUES (
ErrorId,
Application,
Host,
Type,
Source,
Message,
User,
AllXml,
StatusCode,
TimeUtc
);
DELETE FROM `elmah_error` WHERE ErrorId NOT IN (
SELECT ErrorId
FROM (
SELECT ErrorId
FROM `elmah_error`
ORDER BY TimeUtc DESC
LIMIT 100
) x
);
END
を私は100件の最後のレコードを維持するためにDELETE部分を追加しました。問題は何もしないということです。しかし、このDELETEコードを単独で使用してMySql Workbenchのクエリウィンドウで実行すると、100を保存した後にレコードが正しく削除されます。奇妙な?カラム名に
わかりませんが、 'ErrorId'(例えば)はストアドプロシージャスコープの変数として扱われませんか?したがって、DELETE文は 'DELETE ... WHERE 1244 NOT IN ... 'になります。間違っています。あなたがそれらをバックティックに入れれば、うまくいくでしょう。同じですTimeUtc – mitkosoft