Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Violação de erro de restrição PRIMARY KEY SQL


Por design, sua tabela [cresql].[dbo].[AR_Transactions] deve conter apenas um valor para a chave primária - no seu caso, isso parece ser uma combinação de colunas que compõem este PK.

Este não é um problema de SQL, mas parece ser um conceito de design.

Você deve descobrir qual combinação de chaves está compondo sua chave primária - pode ser que o design indique que você pode inserir uma vez e atualizar posteriormente para essa combinação (embora eu não considere isso um bom design).

EDITAR

Como Trans_Id é o PK, e você não está usando essa coluna em sua inserção, ela está sendo inserida como IDENTITY, como DEFAULT (brrrrr), ou usando um TRIGGER.

IDENTIDADE: Verifique se a especificação IDENTITY está errada. Se sim, basta redefini-lo. Veja como Como posso propagar novamente uma coluna de identidade em uma variável de tabela T-SQL?

PADRÃO: Esta é uma escolha estranha, e você pode ter que perguntar a quem projetou o banco de dados, ler a documentação ou simplesmente descobrir por conta própria. Em qualquer caso, esta é uma escolha muito incomum.

GATILHO: Encontre o gatilho e leia o código para ver o que ele está fazendo. Veja como encontrar uma lista de gatilhos Qual ​​é a maneira mais portátil de verificar se existe um gatilho no SQL Server?

Cenário alternativo:

Pode haver um gatilho que se insere em uma tabela AUDIT que pode ter o problema. Verifique se a tabela tem outros gatilhos e veja o que eles fazem.