Probleme d'execution d'une requete dans un lot transact SQL
SFanchy
-
jee pee Messages postés 41512 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 41512 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je souhaite supprimer les donner d'une table temporaire déclarée dans ma requête et réinitialiser la valeur Identity
Je fait cela
SET @SQL=('TRUNCATE TABLE @Table_Listing')
EXEC(@SQL)
Mis la table ne se vide pas et la valeur du coup ne semble pas réinitialisée
Avez vous des idées ? ma requête est elle mal écrite ?
Dans l'attente de vos réponses
Je souhaite supprimer les donner d'une table temporaire déclarée dans ma requête et réinitialiser la valeur Identity
Je fait cela
SET @SQL=('TRUNCATE TABLE @Table_Listing')
EXEC(@SQL)
Mis la table ne se vide pas et la valeur du coup ne semble pas réinitialisée
Avez vous des idées ? ma requête est elle mal écrite ?
Dans l'attente de vos réponses
Configuration: Windows / Edge 101.0.1210.32
A voir également:
- Probleme d'execution d'une requete dans un lot transact SQL
- Comment faire un lot sur vinted - Guide
- Comment proposer un lot sur vinted - Guide
- Logiciel sql - Télécharger - Bases de données
- Renommer par lot - Guide
- Sql (+) - Forum Programmation
1 réponse
Bonjour,
Je ne pratique pas spécialement sql server. Mais une particularité, de truncate, c'est que c'est un ordre de type DDL (Data Definition Language) , comme le create table ou le drop table. Alors qu'un delete est un ordre de type DML (Data Manipulation Language), comme insert, update.
Un ordre de type DDL est auto commit, non loggé, et non réversible. Alors que du DML entre 2 points d'arrets, peut être annulé, avant un commit, par un rollback.
Comme ce que tu appeles un lot transactionnel doit être un ensemble cohérent, où tout doit être exécuté, ou pas, donc avec en fin un potentiel rollback pour tout annuler en cas d'erreur, le truncate table vient perturber cette logique, en réalisant un commit au milieu de ta séquence.
Je ne pratique pas spécialement sql server. Mais une particularité, de truncate, c'est que c'est un ordre de type DDL (Data Definition Language) , comme le create table ou le drop table. Alors qu'un delete est un ordre de type DML (Data Manipulation Language), comme insert, update.
Un ordre de type DDL est auto commit, non loggé, et non réversible. Alors que du DML entre 2 points d'arrets, peut être annulé, avant un commit, par un rollback.
Comme ce que tu appeles un lot transactionnel doit être un ensemble cohérent, où tout doit être exécuté, ou pas, donc avec en fin un potentiel rollback pour tout annuler en cas d'erreur, le truncate table vient perturber cette logique, en réalisant un commit au milieu de ta séquence.