Cela ne fonctionne pas dans SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
L'erreur est:
Syntaxe incorrecte près du mot clé "SET".
Qu'est-ce que je fais mal?
Cela ne fonctionne pas dans SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
L'erreur est:
Syntaxe incorrecte près du mot clé "SET".
Qu'est-ce que je fais mal?
Réponses:
Cela fonctionnera dans SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn
ne peut pas utiliser alter colonne pour cela, utilisez plutôt add
ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn
La bonne façon de procéder est la suivante:
Exécutez la commande:
sp_help [table name]
Copiez le nom du fichier CONSTRAINT
.
Déposez le DEFAULT CONSTRAINT
:
ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
Exécutez la commande ci-dessous:
ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]
La solution de Hoodaticus était parfaite, merci, mais j'avais également besoin qu'elle soit réexécutable et j'ai trouvé ce moyen de vérifier si cela avait été fait ...
IF EXISTS(SELECT * FROM information_schema.columns
WHERE table_name='myTable' AND column_name='myColumn'
AND Table_schema='myDBO' AND column_default IS NULL)
BEGIN
ALTER TABLE [myDBO].[myTable] ADD DEFAULT 0 FOR [myColumn] --Hoodaticus
END
Il existe deux scénarios dans lesquels la valeur par défaut d'une colonne pourrait être modifiée,
Requete
create table table_name
(
column_name datatype default 'any default value'
);
Dans ce cas, mon serveur SQL ne permet pas de modifier la valeur de contrainte par défaut existante. Donc, pour changer la valeur par défaut, nous devons supprimer la contrainte par défaut générée par le système ou générée par l'utilisateur. Et après cette valeur par défaut peut être définie pour une colonne particulière.
Suivez quelques étapes:
Exécutez cette procédure de base de données système, elle prend le nom de la table comme paramètre. Il renvoie la liste de toutes les contraintes pour toutes les colonnes de la table.
execute [dbo].[sp_helpconstraint] 'table_name'
Syntaxe:
alter table 'table_name' drop constraint 'constraint_name'
Syntaxe:
alter table 'table_name' add default 'default_value' for 'column_name'
à votre santé @!!!
dans le cas où une restriction existe déjà avec son nom par défaut:
-- Drop existing default constraint on Employee.CityBorn
DECLARE @default_name varchar(256);
SELECT @default_name = [name] FROM sys.default_constraints WHERE parent_object_id=OBJECT_ID('Employee') AND COL_NAME(parent_object_id, parent_column_id)='CityBorn';
EXEC('ALTER TABLE Employee DROP CONSTRAINT ' + @default_name);
-- Add default constraint on Employee.CityBorn
ALTER TABLE Employee ADD CONSTRAINT df_employee_1 DEFAULT 'SANDNES' FOR CityBorn;
Vous pouvez utiliser la syntaxe suivante. Pour plus d'informations, consultez cette question et réponses: Ajouter une colonne avec une valeur par défaut à une table existante dans SQL Server
Syntaxe:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Exemple :
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is
autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
Autrement :
Faites un clic droit sur la table et cliquez sur Conception, puis cliquez sur la colonne que vous souhaitez définir la valeur par défaut.
Ensuite, en bas de page, ajoutez une valeur par défaut ou une liaison: quelque chose comme «1» pour la chaîne ou 1 pour l'int.
3 étapes simples pour modifier une colonne déjà existante qui était nulle avant
update orders
set BasicHours=0 where BasicHours is null
alter table orders
add default(0) for BasicHours
alter table orders
alter column CleanBasicHours decimal(7,2) not null
Contraintes de première chute
https://stackoverflow.com/a/49393045/2547164
DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID('__TableName__')
AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns
WHERE NAME = N'__ColumnName__'
AND object_id = OBJECT_ID(N'__TableName__'))
IF @ConstraintName IS NOT NULL
EXEC('ALTER TABLE __TableName__ DROP CONSTRAINT ' + @ConstraintName)
Deuxième créer la valeur par défaut
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
Essayez la commande suivante;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
Comme la réponse de Yuck avec une vérification pour permettre au script d'être exécuté plus d'une fois sans erreur. (moins de code / chaînes personnalisées que l'utilisation de information_schema.columns)
IF object_id('DF_SomeName', 'D') IS NULL BEGIN
Print 'Creating Constraint DF_SomeName'
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
END