Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 创建表并将查询作为默认值分配给字段_Mysql_Sql_Database - Fatal编程技术网

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

Mysql 创建表并将查询作为默认值分配给字段,mysql,sql,database,Mysql,Sql,Database,我如何在MYSQL中做类似的事情?如果在创建新行的过程中没有指定值,我将尝试从另一个表中指定一个默认值 这是可能的,还是应该使用触发器/过程?MySQL非常明确,这是不可能的。首先,default的语法称为defaultvalue。需要一个值 以下是对这一点的描述: 数据类型规范中的默认值子句表示 列的默认值。除了一个例外,默认值 必须是常数;它不能是函数或表达式 一个例外是当前时间,大多数人可能甚至没有意识到这是一个函数 在这里,许多数据库都允许函数调用。据我所知,不允许使用查询表达式。但是,

我如何在MYSQL中做类似的事情?如果在创建新行的过程中没有指定值,我将尝试从另一个表中指定一个默认值


这是可能的,还是应该使用触发器/过程?

MySQL非常明确,这是不可能的。首先,default的语法称为defaultvalue。需要一个值

以下是对这一点的描述:

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

一个例外是当前时间,大多数人可能甚至没有意识到这是一个函数

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


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

no。你不能那样做。您必须使用触发器来设置这样的默认值。
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