Dies funktioniert in SQL Server 2008 nicht:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Der Fehler ist:
Falsche Syntax in der Nähe des Schlüsselworts 'SET'.
Was mache ich falsch?
Dies funktioniert in SQL Server 2008 nicht:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Der Fehler ist:
Falsche Syntax in der Nähe des Schlüsselworts 'SET'.
Was mache ich falsch?
Antworten:
Dies funktioniert in SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn
kann die alter column dafür nicht verwenden, benutze stattdessen add
ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn
Der richtige Weg, dies zu tun, ist wie folgt:
Führen Sie den folgenden Befehl aus:
sp_help [table name]
Kopieren Sie den Namen des CONSTRAINT
.
Lassen Sie das fallen DEFAULT CONSTRAINT
:
ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
Führen Sie den folgenden Befehl aus:
ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]
Hoodaticus 'Lösung war perfekt, danke, aber ich brauchte sie auch, um wieder ausgeführt werden zu können, und fand diesen Weg, um zu überprüfen, ob sie durchgeführt wurde ...
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
Es gibt zwei Szenarien, in denen der Standardwert für eine Spalte geändert werden kann:
Abfrage
create table table_name
(
column_name datatype default 'any default value'
);
In diesem Fall erlaubt mein SQL Server nicht, den vorhandenen Standardeinschränkungswert zu ändern. Um den Standardwert zu ändern, müssen wir die vorhandene vom System generierte oder vom Benutzer generierte Standardeinschränkung löschen. Danach kann der Standardwert für eine bestimmte Spalte festgelegt werden.
Befolgen Sie einige Schritte:
Führen Sie diese Systemdatenbankprozedur aus, wobei der Tabellenname als Parameter verwendet wird. Es gibt eine Liste aller Einschränkungen für alle Spalten in der Tabelle zurück.
execute [dbo].[sp_helpconstraint] 'table_name'
Syntax:
alter table 'table_name' drop constraint 'constraint_name'
Syntax:
alter table 'table_name' add default 'default_value' for 'column_name'
Prost @!!!
Falls bereits eine Einschränkung mit ihrem Standardnamen besteht:
-- 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;
Sie können die folgende Syntax verwenden: Weitere Informationen finden Sie in dieser Frage und den Antworten: Fügen Sie einer vorhandenen Tabelle in SQL Server eine Spalte mit einem Standardwert hinzu
Syntax :
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Beispiel:
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.
Ein anderer Weg :
Klicken Sie mit der rechten Maustaste auf die Tabelle und klicken Sie auf Design. Klicken Sie dann auf die Spalte, für die Sie den Standardwert festlegen möchten.
Fügen Sie dann am Ende der Seite einen Standardwert oder eine Bindung hinzu: etwa '1' für Zeichenfolge oder 1 für int.
Gerade gefunden 3 einfache Schritte, um bereits vorhandene Spalte zu ändern, die vorher null war
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
Erste Drop-Einschränkungen
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)
Zweitens Standardwert erstellen
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
Versuchen Sie den folgenden Befehl;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
Wie Yucks Antwort mit einem Häkchen, damit das Skript mehr als einmal ohne Fehler ausgeführt werden kann. (weniger Code / benutzerdefinierte Zeichenfolgen als bei Verwendung von 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