私の質問は非常に単純ですが、答えは難しいかもしれません。
私はPHPを使用しており、オブジェクトの一意のIDを手動で管理したいと考えています。トリッキーなのは、アトミック性を管理することです。2つの要素が同じIDを取得することは望ましくありません。
「要素」は「グループ」にグループ化されます。各グループで、要素IDを1から開始し、そのグループの挿入ごとに段階的に増やしていきます。
私の最初の解決策は、テーブル「Groups」に「lastID」列を含めることです。
CREATE TABLE groups ( id INT AUTO_INCREMENT, lastId INT )
CREATE TABLE elements ( myId INT, multiple values ...)
同じIDを持つ多くの要素を回避するには、lastIdを更新して、アトミックSQLクエリで選択する必要があります。
その後、1つ取得すると、再度選択できない一意のIDがあり、要素を挿入できます。
私の質問は、大胆な部分をどのように解決するかです。私のデータベースはMyISAMエンジンを搭載したMySQLであるため、トランザクションはサポートされていません。
UPDATE groups
SET lastId = lastId + 1
WHERE id = 42
SELECT lastId
FROM groups
WHERE id = 42
これらの2つのリクエストよりもアトミックなものはありますか?
ありがとう