To nie działa w SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Błąd jest następujący:
Niepoprawna składnia w pobliżu słowa kluczowego „SET”.
Co ja robię źle?
To nie działa w SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Błąd jest następujący:
Niepoprawna składnia w pobliżu słowa kluczowego „SET”.
Co ja robię źle?
Odpowiedzi:
Będzie to działać w SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn
nie można do tego użyć kolumny alter, zamiast tego należy użyć add
ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn
Prawidłowy sposób to zrobić:
Uruchom polecenie:
sp_help [table name]
Skopiuj nazwę CONSTRAINT
.
Upuść DEFAULT CONSTRAINT
:
ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
Uruchom poniższe polecenie:
ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]
Dziękuję, rozwiązanie Hoodaticus było idealne, ale potrzebowałem go również do ponownego uruchomienia i znalazłem ten sposób, aby sprawdzić, czy zostało zrobione ...
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
Istnieją dwa scenariusze, w których można zmienić wartość domyślną dla kolumny:
Pytanie
create table table_name
(
column_name datatype default 'any default value'
);
W takim przypadku mój serwer SQL nie pozwala modyfikować istniejącej domyślnej wartości ograniczenia. Aby zmienić wartość domyślną, musimy usunąć istniejące ograniczenie wygenerowane przez system lub domyślne ograniczenie wygenerowane przez użytkownika. Po tym można ustawić wartość domyślną dla konkretnej kolumny.
Wykonaj kilka kroków:
Wykonaj tę procedurę systemowej bazy danych, jako parametr przyjmuje nazwę tabeli. Zwraca listę wszystkich ograniczeń dla wszystkich kolumn w tabeli.
execute [dbo].[sp_helpconstraint] 'table_name'
Składnia:
alter table 'table_name' drop constraint 'constraint_name'
Składnia:
alter table 'table_name' add default 'default_value' for 'column_name'
Twoje zdrowie @!!!
w przypadku, gdy istnieje już ograniczenie z jego domyślną nazwą:
-- 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;
Możesz użyć następującej składni. Aby uzyskać więcej informacji, zobacz to pytanie i odpowiedzi: Dodaj kolumnę z wartością domyślną do istniejącej tabeli w programie SQL Server
Składnia:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Przykład:
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.
Inny sposób :
Kliknij prawym przyciskiem myszy tabelę i kliknij opcję Projekt, a następnie kliknij kolumnę, w której chcesz ustawić wartość domyślną.
Następnie na dole strony dodaj wartość domyślną lub powiązanie: coś w rodzaju „1” dla ciągu lub 1 dla int.
Właśnie znalazłem 3 proste kroki, aby zmienić już istniejącą kolumnę, która wcześniej była pusta
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
Ograniczenia pierwszego zrzutu
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)
Następnie utwórz wartość domyślną
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
Spróbuj wykonać polecenie;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
Podobnie jak odpowiedź Yucka z zaznaczeniem, aby skrypt mógł być uruchamiany więcej niż jeden raz bez błędów. (mniej kodów / ciągów niestandardowych niż przy użyciu 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