【问题标题】:Primary key + Composite primary key causing issue in propel database schema主键 + 复合主键导致推进数据库模式出现问题
【发布时间】:2011-02-25 15:17:52
【问题描述】:

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

<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 之外的主键,但是当我尝试使用 @ 时会产生问题987654324@。我希望将自动递增的 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" />

【问题讨论】:

    标签: php database orm doctrine propel


    【解决方案1】:

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

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

    根据propel doc

    【讨论】:

    【解决方案2】:

    这是使用 yaml 的教义的答案

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 2014-01-20
      • 2016-09-09
      相关资源
      最近更新 更多