我正在尝试为UUID类型字段设置默认值
▼
function modulecontractsSelect(checkbox) {
if (checkbox.checked) {
document.getElementById("module-contracts-summary").innerHTML = "Module contractbeheer"
document.getElementById("module-contracts-summary-price").innerHTML = "€5 / mnd";
}
else {
document.getElementById("module-contracts-summary").innerHTML = "";
document.getElementById("module-contracts-summary-price").innerHTML = "";
}
}
然而,此设置执行
/**
* @var int
*
* @ORM\Column(name="uuid", type="guid", options={"default"="uuid_generate_v4()"})
* @ORM\Id()
* @ORM\GeneratedValue(strategy="UUID")
*/
private $uuid;
并将其作为文本。如何在数据库注释中将数据库函数定义为默认值?
答案 0 :(得分:1)
在创建表上,您可以使用此注释
/**
* @ORM\Column(name="uuid", type="guid", columnDefinition="DEFAULT uuid_generate_v4()", options={"comment"="Column Comment Here"})
* @ORM\Id()
* @ORM\GeneratedValue(strategy="UUID")
*/
private $uuid;
ColumnDefinition 将内容附加到DDL see Doctrine Documentation
此配置的SQL输出是
ALTER TABLE table_name ADD uuid DEFAULT uuid_generate_v4();
COMMENT ON COLUMN table_name.uuid IS 'Column Comment Here';
这些注释对CHANGE COLUMN没有任何作用。仅适用于ADD COLUMN生成的SQL。您必须手动重新创建列或更改表格。
重要提示: 对于那些在PostgreSQL中寻找创建UUID Column Type的人,请记住,你需要启用一些扩展来使用创建uuid-hashes的函数。
在示例中, uuid_generate_v4() 源自UUID-OSSP,旧版本的PostgreSQL不支持它。 相反,UUID-OSSP可以使用PGCRYPTO中的 gen_random_uuid() 功能。 UUID结果是相同的版本(v4)。同样,旧版本不支持它。
请记住使用Create Extension安装扩展程序。
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; // OR
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
另一个重要说明:在某些PostgreSQL安装(如CentOS)中,默认情况下不包含扩展名。你必须安装它们。
对于CentOS / RHEL,您需要安装 postgresql-contrib 。注意PostgreSQL的版本。即对于9.5版,您必须使用 postgresql95-contrib
创建没有扩展名的uuid哈希是一个技巧。只需使用上面的说明。
uuid_in(md5(random()::text || clock_timestamp()::text)::cstring);
如果您的版本支持:: UUID强制转换,请使用
md5(random()::text || clock_timestamp()::text)::uuid