我想將@@ system_time_zone定義爲我想要添加到現有表的列的默認值。 例如如何將@@ system_time_zone定義爲MySQL中現有表的列的默認值?
ALTER TABLE T1 ADD COLUMN TIME_ZONE CHAR(64) NOT NULL DEFAULT @@system_time_zone;
這會引發MySQL語法錯誤。我嘗試在單引號內附上@@ system_time_zone。我現在把它分成兩部分,如下所示:
ALTER TABLE T1 ADD COLUMN TIME_ZONE CHAR(64) NOT NULL;
UPTATE T1 SET [email protected]@system_time_zone;
這很有效,但很明顯這不是一個理想的解決方案。我試圖搜索谷歌/ StackOverFlow但無濟於事。任何人都可以讓我知道,如果有一個正確的語法,可以實現這個/任何其他的替代方法,這可以實現?
您可能需要在語句末尾添加尾隨空格(在'not null default'後面);也可以指出,採用這種方法時,默認值是在創建table_時的當前系統時區,而不是在插入表格時;即如果您以後更改系統時區,列默認仍將是舊系統時區。 – lanzz
@lanzz,這是真的。因爲它變成了一個常數。 – ravnur
我知道這是,我正試圖幫助你改善你的答案,爲未來的讀者帶來益處。在實際應答體中包含該警告將是一件好事,因爲OP可能希望始終將當前系統時區作爲該列的默認值。 – lanzz