2011-02-25 57 views
3

我有一个表使用自动递增的主键,它有几个字段。主键+引发数据库模式导致问题的复合主键

<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" /> 

回答

4

尝试在这些领域设置一个唯一索引,这样的:

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

propel doc

+0

谢谢,那是我需要的。 – twitter 2011-02-25 21:51:55

+0

工作链接:http://propelorm.org/reference/schema#unique-element(编辑答案) – 2014-05-07 13:22:52

0

这里是教条的答案与YAML

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