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中做类似的事情?如果在创建新行期间没有指定任何值,我正试图从另一个表中分配默认值。
是否有可能或者我应该使用触发器/程序?
答案 0 :(得分:1)
MySQL非常清楚,这是无法做到的。首先,默认语法称为默认值。值是预期的。
以下是documentation对此的描述:
数据类型规范中的
DEFAULT
值子句表示a 列的默认值。 有一个例外,默认值 必须是一个常数;它不能是一种功能或表达。
(一个例外是CURRENT_TIME
,大多数人可能甚至都认为这是一个功能。)
许多数据库都支持函数调用。无 - 据我所知 - 允许查询表达式。但是,通常可以在用户定义的函数中进行模拟。
解决方法是使用触发器。在另一个表中查找值是触发器的相当常见的用途。