Machen Spalte standardmäßig auf NULL explizit
Wie mache ich eine Spalte standardmäßig auf NULL explizit?
Möchte ich erklären, eine Spalte in Oracle SQL Developer zu NULL
auf default. Ich bin mir der Tatsache bewusst, dass NULL
wird der default-Wert, wenn ich definieren Sie keine default-Wert überhaupt. Aber wie definiere ich NULL
als Standard, wenn ich wollen würde, dass es explizit tun?
-- 1: Does not work.
ALTER TABLE MY_TABLE ADD (
MY_COLUMN TIMESTAMP(6) DEFAULT null
);
-- 2: Does not work.
ALTER TABLE MY_TABLE ADD (
MY_COLUMN TIMESTAMP(6) DEFAULT NULL
);
-- 3: Does not work.
ALTER TABLE MY_TABLE ADD (
MY_COLUMN TIMESTAMP(6) DEFAULT (null)
);
-- 4: This works.
ALTER TABLE MY_TABLE ADD (
MY_COLUMN TIMESTAMP(6)
);
In Fall 1-3 ist der default-Wert wird eine Zeichenkette ("NULL
", "null
" oder "(null)
"), nicht aber eine tatsächliche NULL
Wert. So was vermisse ich hier?
//Edit:
Fall (a) und (b) entsprechen Fall 1 und 2. Ein text-Wert von null
oder NULL
angezeigt, im SQL Developer. Fall (c) entspricht Fall 4, wo ein real (null)
Wert explizit festgelegt ist. Die screenshots wurden bei einer Tabelle Spalten Registerkarte SQL Developer.
SQL Developer http://s1.postimg.org/fclraa0dp/SQL_Developer.png
- Haben Sie irgendeinen Grund für den Wunsch, diese anderen als zur Befriedigung Ihrer eigenen Neugier? (Das ist ein triftiger Grund, aber andere Gründe könnte Eingabeaufforderung anderen Antworten.)
- Funktioniert das gut: sqlfiddle.com/#!9/c0113/1 es muss etwas anderes sein Sie nicht uns mitzuteilen. Was ist der exakt Fehlermeldung erhalten Sie? (Btw: Aussage 1,2 und 3 sind identisch)
- Es gibt keine Fehler, es stellt einfach keine
(null)
Wert als Standardwert. Lesen Sie sich meine Frage eher vorsichtig, ich habe erwähnt, dass bereits. Auch, warum haben Sie entfernen dieoracle-sqldeveloper
tag? - Einfach nur neugierig, wie man
(null)
als default-Wert in der Abfrage mit SQL Developer (explizit). - Da der SQL-client verwendet wird, ist irrelevant für die Frage. Und in dem Fall 1-3 ist der default-Wert wird nicht ein string sein. Es werden ein
null
Wert. Und was genau meinst du mit "es stellt einfach keine (null -) Wert als Standard" - wo erwarten Sie von dieser null-Wert "setzen"? Tut Sie es nicht zeigen, bis in der DDL für die Tabelle? Hat es keine insert einen null-Wert, der beim ausführen einer insert? - Hmmm, eine Frage zu einem default. Nun, ich denke, dass, wenn die Standard-Voreinstellung ist null, dann, ob Oracle wählt explizit identifizieren oder nicht, ist eine interne Angelegenheit. Ich denke, dies ist ein Beispiel für eine Frage in was würde es helfen, zu wissen, was eventuelle problem eine Lösung helfen würde, mit.
- Diese Frage ist eng gebunden SQL Developer, da waren die
null
wird anders behandelt, die in jeder Abfrage, die ich gepostet. Wenn ich sage, gesagt, ich Rede von der Ausgabe in SQL Entwickler Registerkarte "Spalten". - Sie verstehen, dass der SQL Developer ist nur eine Schnittstelle zum Oracle-RDBMS und SQL Entwickler selbst nicht über einen Standardwert für die Spalte? Es ist nur das Lesen aus der Datenbank-Katalog. SQL-Entwickler könnten so modifiziert werden, dass das Wort "NULL" erscheint als Standardwert für eine Spalte, wenn kein Standardwert festgelegt wurde, aber das ist nur eine Präsentation Thema, das völlig unabhängig zu dem was der Standard ist in der Datenbank.
- Nicht zu sehen, Ihre Abbildung.
- Ich vermute, Sie haben falsch verstanden, die syntax.
'NULL'
ist ein string, der die ZeichenN
,U
,L
,L
.NULL
ist kein string, es ist ein Ausdruck, der den Wert NULL; gleich wienull
und(null)
und(NULL)
die sind alle logisch äquivalent. - Warum ist dann das input-Feld leer, wenn
(null)
war implizit gesetzt oder Umgekehrt, warum SQL Developer anzeigen(null)
wenn der implizite Standardwert ist kein Wert. Es scheint widersprüchlich zu mir. - Wahrscheinlich, weil Sie tun seltsame Dinge - es gibt keinen logischen Grund, um den Standard zu einer dieser Ausdrücke, da
NULL
ist der Standard sowieso, also, warum jemand kümmern würde, wie die SQL-Entwickler zeigt ist mir schleierhaft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als
null
,NULL
und(null)
sind die gleiche Sache, die ich nicht verstehe, was das problem ist.Ist es auch keine SQL Developer "problem".
Oracle speichert die Standard-expression genau so, wie du es geschrieben in den system-Katalog. SQL Developer zeigt einfach, dass.
Übernehmen Sie die folgenden Anweisungen:
Dann
Wird Folgendes zurückgegeben:
Beim extrahieren der DDL aus dem system, Sie wieder zu bekommen, warum genau Sie geschrieben haben:
gibt:
Versuchen Sie dies:
Tabelle erstellt.
Tabelle verändert.
funktioniert für mich.
NULL
implizit. DieNULL
hier gibt an, dass die Spalte null-Werte zulässt, nicht, dass der default-Wert istNULL
.NULL
, aber seine einfach den text. Nicht(null)
im Sinne von kein Wert. Ich bin auf SQL Developer 4.0.1.14. Welche version verwenden Sie?