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