Tadoquery Post: "Impossible de mettre à jour une colonne non nullable avec null" dans la colonne "Identité"

J'essaie d'utiliser une TAdoquery avec MS SQL Server dans un projet delphi hérité. L'set de données contient un champ qui représente une colonne d'identité dans la table SQL. Il a AutogenerateValue = arAutoInc et ProviderFlags [pfInWhere, pfInKey] . Il a également Required = false .

Après avoir fait de l' adoquery.Append moi préconfigurer les champs et essayez de faire de l' adoquery.Post mais obtenez cette erreur: Non-nullable column cannot be updated to Null

Tous les champs non nullables sont définis sur non-null avant la publication, de sorte que la colonne d'identité est le seul suspect. TADOQuery n'a pas de jointures (simple Sélectionnez * depuis my_table), mais il a des champs de search et des champs calculés, qui peuvent être null. Pour les champs de search et les champs calculés, j'ai supprimé les indicateurs de fournisseur pour m'assurer que ces champs n'apparaissent pas dans l'instruction insert ou update.

Le champ d'identité est NULL immédiatement avant la publication, je ne vois pas de command insert tirant sur le server dans le profileur, à la place je reçois juste cette erreur.

  • Est-il possible de prévisualiser l'instruction sql générée par le Tadoquery pour insert une nouvelle ligne?

Je l'ai résolu, le problème était bien sûr sans rapport avec la colonne d'identité. Le sql initial était select * from myTable , ce qui signifiait qu'il chargeait également quelques colonnes supplémentaires qui n'étaient liées à aucune colonne de ma DBGridEh. Après avoir remplacé * par une list explicite des colonnes dont j'avais besoin, l'INSERT fonctionnait.