创建表并将查询作为默认值分配给字段

时间:2017-04-07 16:11:53

标签: mysql sql database

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中做类似的事情?如果在创建新行期间没有指定任何值,我正试图从另一个表中分配默认值。

是否有可能或者我应该使用触发器/程序?

1 个答案:

答案 0 :(得分:1)

MySQL非常清楚,这是无法做到的。首先,默认语法称为默认。值是预期的。

以下是documentation对此的描述:

  

数据类型规范中的DEFAULT值子句表示a   列的默认值。 有一个例外,默认值   必须是一个常数;它不能是一种功能或表达。

(一个例外是CURRENT_TIME,大多数人可能甚至都认为这是一个功能。)

许多数据库都支持函数调用。无 - 据我所知 - 允许查询表达式。但是,通常可以在用户定义的函数中进行模拟。

解决方法是使用触发器。在另一个表中查找值是触发器的相当常见的用途。