MERGE non-standard behaviour, accepts multiple matches

If the WHEN MATCHED clause is present and a record in the target table matches multiple records in the source, an exception should be raised ("cardinality violation").

Firebird's behaviour is to execute the UPDATE for every match found, each one of them overwriting the previous one, wasting resources and giving an unpredictable result (i.e., you don't know which of the source records will eventually determine the outcome).

Description

If the WHEN MATCHED clause is present and a record in the target table matches multiple records in the source, an exception should be raised ("cardinality violation").
Firebird's behaviour is to execute the UPDATE for every match found, each one of them overwriting the previous one, wasting resources and giving an unpredictable result (i.e., you don't know which of the source records will eventually determine the outcome).