繁体   English   中英

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

[英]Create Table and assign a query as default value to a field

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 期望值。

以下是文档描述的方式:

数据类型规范中的DEFAULT value子句指示列的默认值。 除一个例外,默认值必须为常量; 它不能是函数或表达式。

(一个例外是CURRENT_TIME ,大多数人甚至可能没有意识到这是一个函数。)

许多数据库的确允许此处进行函数调用。 据我所知,没有一个允许查询表达式。 但是,通常可以在用户定义的函数中进行模拟。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM