id、refresh_token、token の列を持つ Tokens というテーブルがあるとします。 fresh_token 列は一意である必要があります。ただし、null のfresh_token フィールドが多数ある可能性があります。これらの null のリフレッシュトークンフィールドは後で更新する必要がありますが、別のフィールドに含まれるリフレッシュトークン値を入力しようとする可能性があり、競合が発生します。
それで、私がやりたかったことは次のとおりです。
私はこのようにしましたが、それが最善の方法かどうかはわかりません。もしかしたら、あなたの答えについてアドバイスしたり、少し説明したりできるかもしれません。
if con.query("(SELECT id FROM Tokens WHERE refresh_token='#{refresh_token}') LIMIT 1;").count == 1
# do something important here
else
con.query("UPDATE Tokens SET refresh_token='#{refresh_token}' WHERE id='#{id}';")
end
これは Ruby を使用して行われます。
次のステートメントを使用して、更新前にチェックを実行できます。
IF (NOT EXISTS(SELECT * FROM Tokens WHERE Token = ''))
BEGIN
INSERT INTO Tokens(token,..,..)
VALUES(val1,val2,val3)
END
END
または
IF (EXISTS(SELECT * FROM Tokens WHERE Token = ''))
BEGIN
update Tokens
SET token = myVal
END
END
何が必要かわかりません。上記のいずれかが役立つことを願っています:)