主键+复合主键在推进数据库模式中导致问题

时间:2011-02-25 15:17:52

标签: php database orm doctrine propel

我有一个使用自动递增主键的表,它有几个字段。

<column name="id" type="INTEGER" primaryKey="true" required="true" autoIncrement="true" />
<column name="field1" type="INTEGER" required="true" />
<column name="field2" type="INTEGER" required="true" />
<column name="field3" type="INTEGER" />
<column name="field4" type="INTEGER" />
<column name="field5" type="INTEGER" />

我想确保field1 + field2组合不会被多次使用,所以除了id之外我还将它们作为主键添加,但是这会产生问题尝试使用findPK()。我希望将自动递增的ID作为主键,但我还要确保组合field1 + field2不会多次输入。

<column name="id" type="INTEGER" primaryKey="true" required="true" autoIncrement="true" />
<column name="field1" type="INTEGER" required="true" primaryKey="true" />
<column name="field2" type="INTEGER" required="true" primaryKey="true" />

2 个答案:

答案 0 :(得分:4)

尝试在这些字段上设置唯一索引,例如:

<unique>
  <unique-column name="/field1/" />
  <unique-column name="/field2/" />
</unique>

根据propel doc

答案 1 :(得分:0)

以下是yaml

的学说答案
Pet:
  columns:
    pet_name:  {type: string(32)}
    owner_id: {type: integer}
  indexes:
    owner_name:
      fields: [pet_name, owner_id]
      type: unique