Salut,
je souhaite effacer les données de certaines tables de ma base, mais impossible de faire un truncate table dessus, à cause de l'erreur suivante
Msg*4712, Niveau*16, État*1, Ligne*14
Impossible de tronquer la table expedition parce qu'elle est actuellement référencée par une contrainte FOREIGN KEY.
Donc après quelques recherches sur google, j'ai lu que ceci pourrait être contourné en faisant un alter table. J'ai donc trouvé et adapté un code qui enlève toutes les contraintes de toutes les tables de la base.
Donc je m'attendais à pouvoir truncate mes tables en toute tranquillité mais j'ai toujours le même problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 --declare a variable that would hold the query to be executed DECLARE @AlterQuery varchar(4000) -- create a cursor that would hold our truncate statements DECLARE AlterQuerries CURSOR LOCAL FAST_FORWARD FOR SELECT 'ALTER TABLE ' + CONSTRAINT_SCHEMA + '.' + TABLE_NAME + ' NOCHECK CONSTRAINT ' + + CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE='FOREIGN KEY' -- read our truncate statements OPEN AlterQuerries -- loop thru each statement in our truncate statement cursor FETCH NEXT FROM AlterQuerries INTO @AlterQuery WHILE @@FETCH_STATUS = 0 BEGIN --execute the statement EXEC(@AlterQuery) Print(@alterquery) --assign the current truncate statement to our @TruncateStatement variable FETCH NEXT FROM AlterQuerries INTO @AlterQuery END -- close our cursor CLOSE AlterQuerries -- and free up the resources DEALLOCATE AlterQuerries
Pouvez vous me confirmer qu'enlever les contraintes sur les tables permet de les tronquer ?
Partager