「userid」列と「expired」列を持つセッション テーブルがあります。指定されたユーザー ID があり、有効期限が切れていない行が存在するかどうかを確認し、行が見つからない場合は新しい行を挿入したいと考えています。
INSERT IGNORE について読みましたが、(ユーザー ID + 期限切れ) をキーにすることはできません。同じユーザー (すべて期限切れ) で複数の行を持つことができるため、期限切れになっていないユーザーを複数持つことはできません。
私はこれを試しましたが、役に立ちませんでした(「エラーがあります...」):
IF (SELECT 1 FROM sessions WHERE user = :user AND expired = 0) <> 1
INSERT INTO sessions (user) VALUES(:user)
('expired' はデフォルトで 0 です)。MySQL のバージョンは 5 です。
更新します。
私もこれを試しました:
IF NOT EXISTS(SELECT 1 FROM sessions WHERE user = 0 AND expired = 0)
INSERT INTO sessions (user) VALUES(0)
HeidySQL 7を使用しています。どちらも機能しません。MySQL のバージョンは 5.5 です。
UPDATE2。ステートメントの論理エラーが修正されました。
よろしく、