使用 MySql。
有一種方法可以設定默認值。我知道如何做一個硬編碼的字串。
我正在嘗試使用
的
用戶()
當前用戶
當前用戶()
請參閱下面的“inserted_by”列。
如果我洗掉
默認用戶()
它作業正常。但這不是我需要的。
我已經嘗試了以上所有 3 個(在“默認”一詞之后)。我無法弄清楚神奇的語法糖。
CREATE TABLE `department` (
`department_key` bigint NOT NULL AUTO_INCREMENT,
`name_of` varchar(256) NOT NULL,
`inserted_by` varchar(64) NOT NULL DEFAULT USER(),
`create_date_off_set` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
CONSTRAINT `PK_department` PRIMARY KEY (`department_key`)
)
;
參考:
https://dev.mysql.com/doc/refman/8.0/en/built-in-function-reference.html
https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html
“我的”版本:
SELECT VERSION();
8.0.23
uj5u.com熱心網友回復:
DEFAULT 子句中指定的默認值可以是文字常量或運算式。除了一個例外,將運算式默認值括在括號內,以將它們與文字常量默認值區分開來。
所以你要inserted_by varchar(255) NOT NULL DEFAULT (CURRENT_USER())
不幸的是,MySQL 不允許這樣做。
Default value expression of column 'inserted_by' contains a disallowed function: current_user.
我找不到任何理由說明為什么它會在檔案中被禁止,但那是你的 MySQL。
相反,使用插入觸發器。
CREATE TRIGGER before_insert_app_users
BEFORE INSERT ON department
FOR EACH ROW
SET new.inserted_by = COALESCE(new.inserted_by, current_user())
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/524154.html
標籤:mysql
