4 votes

Veuillez traduire ceci en conservant les mêmes balises HTML si elles existent de en à fr : erreur de syntaxe du serveur SQL lors de la suppression par défaut

Je cherche à supprimer la valeur par défaut sur une colonne bit, je l'ai configurée incorrectement et je veux le refaire correctement. Cependant, lorsque j'écris:

ALTER TABLE Person
ALTER COLUMN tsHomePref DROP DEFAULT;

Je reçois une erreur de syntaxe incorrecte près du mot-clé default et je ne sais pas pourquoi

Je veux supprimer la colonne puis la reconstruire à nouveau

ALTER TABLE Person
ADD COLUMN tsHomePref bit NOT NULL DEFAULT 0;

Alors, pourquoi ne me permet-il pas de 'supprimer' la valeur par défaut?

Merci R.

5voto

Martin Smith Points 174101

Vous auriez besoin de faire

ALTER TABLE Person 
    DROP CONSTRAINT DF__Person__tsHomePr__05BA7BDB

Cela aide si vous utilisez une convention de nommage cohérente pour ceux-ci afin de ne pas avoir à regarder dans les tables du système pour obtenir le nom en premier.

4voto

Edelcom Points 2795

Si vous ne connaissez pas le nom de la contrainte (comme je ne le savais pas aujourd'hui en cherchant une solution au même problème), vous pouvez utiliser ce qui suit pour Ms Sqlserver :

DÉCLARER @defname VARCHAR(100), @cmd VARCHAR(1000)
SET @defname =
   (SELECT name FROM sysobjects so
     JOIN sysconstraints sc ON so.id = sc.constid
   WHERE object_name(so.parent_obj) = 'TableName'
     AND sc.colid = 
         (SELECT colid FROM syscolumns WHERE id = object_id('dbo.TableName') AND name = 'FieldName'))
    SET @cmd = 'ALTER TABLE TableName DROP CONSTRAINT ' + @defname
   EXEC(@cmd)
GO 

Cela a fonctionné dans mon cas. J'espère que cela aidera également d'autres personnes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X