Standardwert einer Spalte per SQL setzen?

Hallo Experten!

Ich müsste per SQL eine Access 2000 Tabellendefinition ändern.
Der bisherige Datentyp einer Spalte soll von Ja/Nein (BIT) auf Zahl/Byte (TINYINT) geändert werden.

Das funktioniert mit
ALTER TABLE MeineTabelle
ALTER COLUMN MeineSpalte TINYINT

schon ausgezeichnet (seltsamerweise nur, wenn ich’s per ADO.NET aus mache, die selbe Abfrage direkt im Access bringt den Fehler, dass die Spalte ‚TINYINT‘ nicht existiert, aber das nur nebenbei), aber dummerweise ist dann kein Standardwert eingetragen.
Die Spalte ist (und soll’s auch bleiben) NOT NULL, darum falle ich dann beim Versuch, dort einzufügen, auf die Nase, wenn ich wie bisher auch den Wert für MeineSpalte nicht übergebe.

Irgendeine Idee, wie ich den Standardwert ‚0‘ per SQL/DML setzen kann?

Danke schonmal,
Martin

Hi,

der Definition folgend:
(Alter table unter Access)

ALTER TABLE Tabelle {ADD {COLUMN Feld Typ[(Größe)] [NOT NULL] [CONSTRAINT Index] |
 ALTER COLUMN Feld Typ[(Größe)] |
 CONSTRAINT Mehrfeldindex} |
 DROP {COLUMN Feld I CONSTRAINT Indexname} }

kannst Du mit Alter Table keine DEFAULT Angabe machen.

Auch Create Table unterstützt im normalen Abfragefenster keine
SQL-92 Erweiterungen (Default, Constraints etc.).

Du musst die Änderung Deiner Datenbank also über ADO vornehmen.

Dann kannst Du auch das Schlüsselwort DEFAULT verwenden.(ohne
Syntaxfehler)

Der Fehler mit dem TINYINT liegt wohl beim Datentyp selber,
den kennt Access nicht. Über ADO stehen Dir natürlich mehr
Datentypen zu Verfügung (für andere DBMS).

Gruß Andreas

Super, danke!

Da hätte ich eigentlich auch selber draufkommen können, aber irgendwie hat’s beim geistigen Transfer gehakt und ich habe nicht daran gedacht, dass das SQL, das ich direkt in Access habe ja anders ist als das, was ich per ADO zur Verfügung habe…

Kaum macht man’s richtig, schon geht’s… :smile:

Danke nochmal,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]