2011-02-25 37 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