Pour cet exemple, votre problème est certainement dans la sous-requête USING. Cette requête produit plusieurs valeurs de table2.column1
:
SELECT DISTINCT table2.column1,
view1.column2
FROM SCHEMA2.TABLE_2 table2
LEFT JOIN SCHEMA2.VIEW_1 view1
ON table2.column2 = view1.column3
Ainsi, la clause ON correspondra à la ou aux mêmes lignes dans table1
plus d'une fois :
ON (table1.column3 = t2.column1 )
Oracle ne peut pas déterminer quelle valeur de t2.column2
doit être utilisé dans la MISE À JOUR, donc il lance ORA-30926
.
L'utilisation de distinct dans la sous-requête n'aide pas car cela donne des permutations de toutes les colonnes. Vous devez écrire une sous-requête qui produira des valeurs uniques de t2.column1
sur toutes les lignes, ou ajoutez une ou plusieurs autres colonnes d'identification pour générer une clé unique que vous pouvez joindre à table1
.