Первичный ключ + составной первичный ключ, вызывающий проблему в схеме базы данных propel - PullRequest
3 голосов
/ 25 февраля 2011

У меня есть таблица, в которой используется автоинкрементный первичный ключ, и она имеет несколько полей.

<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 не используется более одного раза, поэтому я добавил их в качестве первичных ключей в дополнение к идентификатору, но это создает проблемы, когда я пытаюсь использовать findPK(). Я бы предпочел иметь автоинкрементный идентификатор в качестве первичного ключа, но я также хочу убедиться, что комбинация 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 ]

4 голосов
/ 25 февраля 2011

Попробуйте установить уникальный индекс для этих полей, например:

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

согласно Propel Doc

0 голосов
/ 24 ноября 2011

А вот и ответ на учение с yaml

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