Wie kann ich eine Spalte mit einem Standardwert zu einer bestehenden Tabelle in SQL-Server 2000 / SQL Server 2005 ?
Antworten
Zu viele Anzeigen?Seien Sie vorsichtig, wenn die Spalte, die Sie hinzufügen, ein NOT NULL
Einschränkung, hat aber keine DEFAULT
Einschränkung (Wert). Die ALTER TABLE
Anweisung wird in diesem Fall fehlschlagen, wenn die Tabelle Zeilen enthält. Die Lösung ist, entweder die NOT NULL
Einschränkung der neuen Spalte oder eine DEFAULT
Einschränkung für sie.
Um einer bestehenden Datenbanktabelle eine Spalte mit einem Standardwert hinzuzufügen, können wir verwenden:
ALTER TABLE [dbo.table_name]
ADD [Column_Name] BIT NOT NULL
Default ( 0 )
Hier ist eine weitere Möglichkeit, einer bestehenden Datenbanktabelle eine Spalte mit einem Standardwert hinzuzufügen.
Nachfolgend finden Sie ein sehr viel gründlicheres SQL-Skript zum Hinzufügen einer Spalte mit einem Standardwert, in dem auch geprüft wird, ob die Spalte vorhanden ist, bevor sie hinzugefügt wird, und in dem auch die Einschränkung überprüft und gegebenenfalls gelöscht wird. Dieses Skript benennt auch die Einschränkung, so dass wir eine schöne Namenskonvention haben können (ich mag DF_) und wenn nicht, gibt uns SQL eine Einschränkung mit einem Namen, der eine zufällig generierte Zahl hat; so ist es schön, die Einschränkung auch benennen zu können.
-------------------------------------------------------------------------
-- Drop COLUMN
-- Name of Column: Column_EmployeeName
-- Name of Table: table_Emplyee
--------------------------------------------------------------------------
IF EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table_Emplyee'
AND COLUMN_NAME = 'Column_EmployeeName'
)
BEGIN
IF EXISTS ( SELECT 1
FROM sys.default_constraints
WHERE object_id = OBJECT_ID('[dbo].[DF_table_Emplyee_Column_EmployeeName]')
AND parent_object_id = OBJECT_ID('[dbo].[table_Emplyee]')
)
BEGIN
------ DROP Contraint
ALTER TABLE [dbo].[table_Emplyee] DROP CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]
PRINT '[DF_table_Emplyee_Column_EmployeeName] was dropped'
END
-- ----- DROP Column -----------------------------------------------------------------
ALTER TABLE [dbo].table_Emplyee
DROP COLUMN Column_EmployeeName
PRINT 'Column Column_EmployeeName in images table was dropped'
END
--------------------------------------------------------------------------
-- ADD COLUMN Column_EmployeeName IN table_Emplyee table
--------------------------------------------------------------------------
IF NOT EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table_Emplyee'
AND COLUMN_NAME = 'Column_EmployeeName'
)
BEGIN
----- ADD Column & Contraint
ALTER TABLE dbo.table_Emplyee
ADD Column_EmployeeName BIT NOT NULL
CONSTRAINT [DF_table_Emplyee_Column_EmployeeName] DEFAULT (0)
PRINT 'Column [DF_table_Emplyee_Column_EmployeeName] in table_Emplyee table was Added'
PRINT 'Contraint [DF_table_Emplyee_Column_EmployeeName] was Added'
END
GO
Dies sind zwei Möglichkeiten, einer bestehenden Datenbanktabelle eine Spalte mit einem Standardwert hinzuzufügen.
12 Stimmen
Warum gibt es auf diese Frage 41 Antworten? Wenn ich sie durchsehe, sagen die meisten das Gleiche. Warum werden diese nicht entfernt? Diese Frage braucht nur maximal 3 Antworten.
0 Stimmen
ALTER TABLE SomeTable ADD SomeCol Bit NULL --O NOT NULL. CONSTRAINT D_SomeTable_SomeCol --Wenn ausgelassen, wird ein Default-Constraint Name automatisch generiert. DEFAULT (0)--Optionale Standard-Beschränkung. WITH VALUES --Hinzufügen, wenn die Spalte nullbar ist und Sie den Standardwert für existierende Datensätze haben wollen.
1 Stimmen
@MichaelZ. - 43 Antworten jetzt .....
1 Stimmen
Meiner Meinung nach entspricht diese Frage nicht den Mindestanforderungen an den Aufwand und hätte daher gestrichen werden müssen. @MichaelZ.
1 Stimmen
@JavierG.Raya, aber Sie haben eine neue Antwort erstellt und Sie schließen MYSQL ein. Sie sind Teil des Problems mit dieser Seite. Sie sollten Ihre Antwort löschen.
0 Stimmen
@JavierG.Raya Die Syntax von MYSQL stimmt nicht immer mit der von MSSQL überein, so dass die Bereitstellung einer Antwort für MySQL die Leute eher verwirrt. Es gibt 44 Antworten hier. Warum dachten Sie, dass es Ihre braucht? Es braucht sie nicht.