2012-05-10 12 views
6
  • PostgreSQL 9.1
  • tablas con particiones
    • tbl_master
    • tbl_slave1 (iherits maestro)
    • tbl_slave2 (iherits maestro)
  • Yii marco 1.1.10

Quizás alguien pueda cumplir su experiencia sobre la tabla particionada Yii + PostgreSQL. parte PostgreSQL con tablas con particiones, cheques y provoca grandes obras, pero no puedo llegar a Yii amor estas tablas ..marco Yu y PostgreSQL particionan mesa - 0 filas afectadas

El problema es que al insertar en la tabla de particiones PostgreSQL da 0 rows affected y no puedo encontrar la manera para solucionar esto esto. El modelo Yii piensa que el nuevo registro no se guarda (pero lo es) y $Model->save(); devuelve falso y afterSave() no funciona, y así sucesivamente.

Todos los otros métodos como ->find() o ->findAll() funcionan bien. Incluso si actualizo ahora el registro guardado throw yii todo está bien y me ejecutan afterSave también. El problema es solo con ->save() parte. Actualización de trabajo porque tengo activación solo al insertar nuevas filas.

Estoy usando el disparador para dividir datos nuevos por tablas. Tal vez necesito modificar el desencadenador para que los postgres sepan qué estoy enviando nuevos datos a la tabla slave no master?

Una cosa más. Agregué clave principal a la tabla master para que Yii Model (CActiveRecord) no arroje errores sobre la tabla sin pk. Sé que la documentación no sugiere esto, pero lo hice funcionar de esta manera. Estoy tratando de dar imagen grande de mi situación.

Gracias!

+1

Solución no tan bonita: Use 'RETURN NEW;' en el desencadenador en lugar de 'RETURN NULL;'. Y ahora tengo dos filas idénticas: una en el "maestro" y la segunda en la tabla "esclavo". Así que necesito agregar el disparador 'DESPUÉS DE INSERTAR' para borrar la tabla' maestra' ('ELIMINAR DE SOLO el maestro'). * Pensando en voz alta ... * - pero funcionaría. –

+0

** Confirmando ** comentario anterior - está funcionando. Por ahora es una buena solución. –

Respuesta

1

Podría intentar usar las reglas como alternativa. A medida que reescribe la consulta, espero que devuelva el número correcto de filas afectadas. Si bien los desencadenantes son en la mayoría de los casos mejores, creo que las reglas son mejores que insertar datos en la tabla maestra y tener que eliminarlos nuevamente.

Esto se trata en el párrafo 5.9.5 en this manual page.

Cuestiones relacionadas