我在Oracle中有一个表,其中包含一些具有不同主键的值,例如值1,2,27,125 ......
在我在Symfony的实体中,注释是:
* @ORM\Column(name="MY_KEY", type="decimal")
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="TABLE_MY_KEY_seq", allocationSize=1, initialValue=1)
在Oracle中生成的序列是:
当我在该表中插入一个新的寄存器时,doctrine尝试插入第一个位置(id = 1),因此我有一个错误(PK违反,主键重复),然后尝试第二个位置(相同的错误。 ..)直到发现我空位。我们遇到相同的错误后N次,因为尝试插入值为27 o 125且已在数据库中的主键。 ¿我该如何控制它?因为从第一次开始,我需要在数据库中包含这些值,而我不知道它们将是什么值。
谢谢:)
答案 0 :(得分:0)
你应该改变顺序。假设表中的最大ID为1500,然后运行
ALTER SEQUENCE TABLE_MY_KEY_seq
MAXVALUE 1500;
你的第一个身份证是1501。 否则,您应该实现自己的自定义策略,如此处所述 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#identifier-generation-strategies