Лучший способ сделать это использует on duplicate key update
:
Во-первых, вам нужен уникальный индекс, поэтому база данных поддерживает целостность данных.
Второе:
INSERT INTO LICENSE_TABLE (code, license_type, distributor)
VALUES ('uniquecode', 'standard', 'walmart')
ON DUPLICATE KEY UPDATE code = VALUES(code);
Это лучше, чем WHERE
подзапрос с EXISTS
, потому что он поточно-ориентированный . Это означает, что множественные обновления в разных потоках никогда не вызовут проблем.
Это лучше, чем INSERT IGNORE
, потому что INSERT IGNORE
будет игнорировать другие ошибки. ON DUPLICATE KEY UPDATE
делает именно то, что вы хотите.