I’m getting this error message
IntegrityError: (2627, b"Violation of UNIQUE KEY constraint
‘XXXXX_TypeOfData_input_un’. Cannot insert duplicate key in object
‘XXXXX.TypeOfData_input’. The duplicate key value is (Processing Data,
Processing Data Name).DB-Lib error message 20018, severity
14:\nGeneral SQL Server error: Check messages from the SQL Server\n")
How to add unique constraint when insert?
My code
INSERT INTO XXXXX.TypeOfData_input (TypeName, DataName)
VALUES (%(TypeName)s, %(DataName)s)
My usual code for postgresql
INSERT INTO XXXXX.TypeOfData_input (TypeName, DataName)
VALUES (%(TypeName)s, %(DataName)s) ON CONFLICT (TypeName, DataName) DO UPDATE NOTHING
>Solution :
We can use a MERGE statement to insert only if the record doesn’t already exist.
MERGE INTO XXXXX.TypeOfData_input AS target
USING (VALUES (%(TypeName)s, %(DataName)s)) AS source (TypeName, DataName)
ON target.TypeName = source.TypeName AND target.DataName = source.DataName
WHEN NOT MATCHED THEN
INSERT (TypeName, DataName)
VALUES (source.TypeName, source.DataName);