Spalte zu Tabelle hinzufügen mit Kommentar

CopWorker

Erfahrenes Mitglied
Hallo,

bin gerade dran einer SQL Datenbanktabelle ein Spalte hinzuzufügen.
Geht eigentlich ganz einfach.
Das mit dem Kommentar erstellen funktioniert nicht.

....das geht:
alter table "dba"."RepairId" add Zeit integer not NULL default 0;

...das geht nicht:
alter table "dba"."StationenRepairId" add Zeit integer not NULL default 0 comment Zeitspannen wie lange der Prozess gedauert hat (in msec);
alter table "dba"."StationenRepairId" add Zeit integer not NULL default 0 comment 'Zeitspannen wie lange der Prozess gedauert hat (in msec)';
alter table "dba"."StationenRepairId" add Zeit integer not NULL default 0 comment "Zeitspannen wie lange der Prozess gedauert hat (in msec)";

Vielen Dank im Voraus.
Gruß CopWorker
 
Hallo bdt600,

sowohl als auch.

Ich verwende ein interaktives Fenster von meinem Datenbank Client.
Da kann ich das Query so eingeben und ausführen,
Orthogonal hierfür ist es möglich dieses Query in ein Script-file einfügen
und dieses Script über das interaktive Fenster zu starten.
Kommt auf das Selbe raus.

Gruß CopWorker
 
Hallo Zvoni,

es ist doch möglich den Variablentyp und den Defaultwert beim Erstellen der Spalte mitzugeben.
Dann muss das doch auch für den Spaltenkommentar gehen.
Vielleicht finde ich noch ´ne Doku hierfür.
Bei Microsoft siehts bescheiden aus.

Aber trotzdem vielen Dank.

Gruß von CopWorker
 
Hallo Zvoni,

es ist doch möglich den Variablentyp und den Defaultwert beim Erstellen der Spalte mitzugeben.
Dann muss das doch auch für den Spaltenkommentar gehen.
Vielleicht finde ich noch ´ne Doku hierfür.
Bei Microsoft siehts bescheiden aus.

Aber trotzdem vielen Dank.

Gruß von CopWorker
Es ist Microsoft
was hast du denn erwartet?
 
Aus dem linken Ärmel (Vermutung):
Datentyp und Default-Wert einer Spalte sind "direkte" Eigenschaften einer Spalte. Demzufolge lassen diese sich auch direkt setzen. Der Datentyp ist eine MUSS-Eigenschaft, der Default-Wert eine KANN-Eigenschaft.
Wenn du keinen Default-Wert während CREATE/ALTER TABLE angibst, wird TROTZDEM ein Default-Wert im Hintergrund vergeben (i.d.R. NULL)

Wie zu lesen, ist ein Kommentar eine "erweiterte" Eigenschaft.
Ich lese das so, dass eine Spalte bereits existieren muss, bevor man diese setzen kann.
Stell dir das vor wie eine Master-Detail-Beziehung in einer Datenbank

Du hast eine Mastertabelle namens "Spalten" mit Feldern wie
ID, Tabelle, Name, DatenTyp, Defaultwert, NonNull usw.

Dann hast du eine Detail-Tabelle namens "Erweiterte Eigenschaften" mit Feldern wie
ID, Name, Wert, SpaltenID(<--!!!)
Und SpaltenID ist ein Fremdschlüssel auf die MasterTabelle.

Und jetzt die Frage: Wie willst du etwas in einer Detail-Tabelle eintragen, wenn der Satz (und somit der Primärschlüssel) in der MasterTabelle noch nicht existiert?

btw: Wenn ich mich nicht irre, implementiert MS SQL das INFORMATION_SCHEMA (nach ANSI-Standard),
und INFORMATION_SCHEMA hat tatsächlich eine Tabelle namens "Columns"
 
Der Kommentar müsste doch Inhalt der Mastertabelle sein, oder!?

Gruß CopWorker
Nein, eben nicht. Zumindest nicht für MS SQL-Server.
diese SP welche genannt wird hat nicht umsonst "addextendedproperties" in ihrem namen

EDIT: INFORMATION_SCHEMA ist übrigens eine View.
in MS SQL gibt es folgende Tabellen:
sys.columns (Transact-SQL) - SQL Server
sys.extended_properties (Transact-SQL) - SQL Server

Im ersten Link gibt es nirgends eine Eigenschaft "Comment"
im zweiten Link siehst du den Aufbau dieser Extended Properties --> im Prinzip ein stumpfes Key/Value-Paar
Im zweiten Link wird auch nochmal auf die 3 stored procedures für Extended Properties verwiesen
 
Zuletzt bearbeitet:
Zurück