提问者:小点点

在主键上使用PostgreSQL序列的教义更新模式


我试图在PostgreSQL中的遗留数据库表周围包装一个教义模型,该表具有:

    Column   |           Type           |                      Modifiers                       
 ------------+--------------------------+------------------------------------------------------
  id         | integer                  | not null default nextval('table_name_id_seq'::regclass)

如果我尝试以下映射:

/**
 * @ORM\Id
 * @ORM\Column(name="id", type="integer", unique=true)
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

然后,模式更新工具为我提供了以下信息:

 ALTER TABLE table_name ALTER id DROP DEFAULT;

如果我尝试显式定义默认值,例如:

/**
 * @ORM\Id
 * @ORM\Column(name="id", type="integer", unique=true, options={"default"="nextval('table_name_id_seq'::regclass)"})
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

然后它仍然给出:

ALTER TABLE table_name ALTER id SET DEFAULT nextval('table_name_id_seq'::regclass);
ALTER TABLE table_name ALTER id DROP DEFAULT;

最后,如果我尝试手动指定序列:

/**
 * @ORM\Id
 * @ORM\Column(name="id", type="integer", unique=true)
 * @ORM\GeneratedValue(strategy="SEQUENCE")
 * @ORM\SequenceGenerator(sequenceName="table_name_id_seq", initialValue=1, allocationSize=1)
 */
private $id;

我仍然得到DROP DEFAULT

ALTER TABLE table_name ALTER id DROP DEFAULT;

对于这个问题,是否有一个仍然允许使用模式更新工具的解决方法?我找不到与此相关的条令错误,但我可能遗漏了什么。这是最新的2.4版本。在Symfony 2.5下运行的X版条令。2.


共1个答案

匿名用户

尝试

*@ORM\GeneratedValue(策略="IDENTITY")