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.

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
Donc je m'attendais à pouvoir truncate mes tables en toute tranquillité mais j'ai toujours le même problème.
Pouvez vous me confirmer qu'enlever les contraintes sur les tables permet de les tronquer ?