0
リソースうち、ユーザチェックが、私はリソースとユーザーのために行を挿入しようとする場合。私は、例えば、MySql(InnoDB)/ Maria:挿入、無視、ロック、選択?
"CREATE TABLE foo (
resource_id BIGINT UNSIGNED NOT NULL,
user_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (resource_id)
) ENGINE = InnoDB $collate;");
エンドユーザのロックシステムを実装しようとしています既にロックを保持している間に、既存の行からそのユーザーIDを選択したい場合は、指定されたリソースに対して別のユーザーエントリが既に存在する可能性があります。既存の行がない場合は、挿入を成功させ、ロックを解除する前に挿入したのと同じユーザーIDを選択します。
このようなことは、私が望んでいることをするか、より良い方法がありますか? https://dev.mysql.com/doc/refman/5.7/en/innodb-locks-set.htmlによると
START TRANSACTION;
INSERT IGNORE INTO foo (resource_id, user_id) VALUES (4, 2)
SELECT user_id FROM foo WHERE resource_id = 4
COMMIT;