CREATE TABLE `williamhill` (
`id` VARCHAR(50) NULL,
`nick` VARCHAR(50) NULL,
`password` VARCHAR(50) NULL DEFAULT (SELECT default_password FROM person p WHERE p.id = id),
`Colonna 4` VARCHAR(50) NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
我怎样才能在 MYSQL 中做类似的事情?如果在创建新行期间未指定任何值,我将尝试从另一个表分配默认值。
是否有可能这样或者我应该使用触发器/程序?
最佳答案
MySQL 非常明确地表明这是不可能完成的。首先,default 的语法称为default value。需要一个值。
以下是documentation的方法描述如下:
The
DEFAULT
value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression.
(唯一的异常(exception)是 CURRENT_TIME
,大多数人可能甚至没有意识到它是一个函数。)
许多数据库确实允许在此处进行函数调用。据我所知,没有一个允许查询表达式。但是,这通常可以在用户定义的函数中进行模拟。
解决方法是使用触发器。在另一个表中查找值是触发器的一种相当常见的用法。
关于mysql - 创建表并将查询指定为字段的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43282742/