Doctrine orm 原则2.5 GUID字段默认值
我正在尝试为UUID类型字段设置默认值Doctrine orm 原则2.5 GUID字段默认值,doctrine-orm,default,default-value,doctrine-orm-postgres,Doctrine Orm,Default,Default Value,Doctrine Orm Postgres,我正在尝试为UUID类型字段设置默认值 /** * @var int * * @ORM\Column(name="uuid", type="guid", options={"default"="uuid_generate_v4()"}) * @ORM\Id() * @ORM\GeneratedValue(strategy="UUID") */ private $uuid; 然而,这设置执行 ALTER TABLE store ALTER uuid SET DEFAULT'uuid_
/**
* @var int
*
* @ORM\Column(name="uuid", type="guid", options={"default"="uuid_generate_v4()"})
* @ORM\Id()
* @ORM\GeneratedValue(strategy="UUID")
*/
private $uuid;
然而,这设置执行
ALTER TABLE store ALTER uuid SET DEFAULT'uuid_generate_v4()代码>
并将其作为文本。如何在条令注释中将DB函数定义为默认值?在创建表中,您可以使用此注释
/**
* @ORM\Column(name="uuid", type="guid", columnDefinition="DEFAULT uuid_generate_v4()", options={"comment"="Column Comment Here"})
* @ORM\Id()
* @ORM\GeneratedValue(strategy="UUID")
*/
private $uuid;
列定义将内容附加到DDL
此配置的SQL输出为
ALTER TABLE table_name ADD uuid DEFAULT uuid_generate_v4();
COMMENT ON COLUMN table_name.uuid IS 'Column Comment Here';
这些注释对“更改”列不起任何作用。仅适用于添加列生成的SQL。必须手动重新创建列或更改表
重要提示:
对于那些在PostgreSQL中寻找create的人,请记住需要启用一些扩展来使用创建uuid哈希的函数
在本例中,uuid\u generate\u v4()是从中派生的,较旧版本的PostgreSQL不支持它。
相反,UUID-OSSP可以从中使用gen_random_UUID()函数。UUID结果是相同的版本(v4)。同样,旧版本不支持它
只需记住使用安装扩展即可
另一个重要注意事项:在某些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
md5(random()::text || clock_timestamp()::text)::uuid