2012-05-10 10 views
6
  • PostgreSQL 9.1
  • tabelle partizionate
    • tbl_master
    • tbl_slave1 (iherits master)
    • tbl_slave2 (iherits maestro)
  • Yii quadro 1.1.10

Forse qualcuno può chare la sua esperienza sulla tabella partizionata Yii + PostgreSQL. PostgreSQL parte con tavoli partizionati, assegni e fa scattare opere grandi, ma non riesco a ottenere Yii per amore queste tabelle ..Yii quadro e PostgreSQL partizionati tavolo - 0 righe influenzato

Il problema è che in inserimento nella tabella partizionata PostgreSQL dà 0 rows affected e non posso capire come per risolvere il problema. Il modello Yii pensa che il nuovo record non viene salvato (ma lo è) e $Model->save(); restituisce false e quindi afterSave() non funziona e così via.

Tutti gli altri metodi come ->find() o ->findAll() funzionano correttamente. Anche se aggiorno ora ho salvato il record e tutto è ok e vengo eseguito anche afterSave. Il problema è solo con la parte ->save(). Aggiornamento funzionante perché ho trigger solo sull'inserimento di nuove righe.

Sto utilizzando il trigger per dividere nuovi dati per tabelle. Forse ho bisogno di modificare il trigger in modo postgres sapere che sto inoltrando nuovi dati al tavolo slave non master?

Un'altra cosa. Ho aggiunto la chiave primaria alla tabella master, quindi il modello Yii (CActiveRecord) non genera errori sulla tabella senza pk. So che la documentazione non lo suggerisce, ma ho funzionato in questo modo. Sto solo cercando di dare big picture della mia situazione.

Grazie!

+1

Soluzione non molto carina: usa 'RETURN NEW;' nel trigger invece di 'RETURN NULL;'. E ora ho due file identiche - una in 'master' e una seconda in' slave' table. Quindi ho bisogno di aggiungere il trigger "AFTER INSERT" per cancellare la tabella 'master' (' DELETE FROM ONLY master'). * Pensando ad alta voce .. * - ma funzionerebbe. –

+0

** Conferma ** commento precedente: funziona. Per ora è buona soluzione. –

risposta

1

Si potrebbe provare a utilizzare le regole in alternativa. Poiché riscrive la query, mi aspetto che restituisca il numero corretto di righe interessate. Sebbene i trigger siano nella maggior parte dei casi migliori, penso che le regole siano migliori quindi inserire i dati nella tabella principale e doverli eliminare di nuovo.

Questo è descritto nel paragrafo 5.9.5 su this manual page.

Problemi correlati