From: <ken...@us...> - 2008-07-28 14:02:34
|
Revision: 475 http://andro.svn.sourceforge.net/andro/?rev=475&view=rev Author: kendowns Date: 2008-07-28 14:02:42 +0000 (Mon, 28 Jul 2008) Log Message: ----------- Fix pk_change feature for PROMAT project Modified Paths: -------------- trunk/andro/application/androBuild.php Modified: trunk/andro/application/androBuild.php =================================================================== --- trunk/andro/application/androBuild.php 2008-07-22 20:26:10 UTC (rev 474) +++ trunk/andro/application/androBuild.php 2008-07-28 14:02:42 UTC (rev 475) @@ -3688,11 +3688,25 @@ $tkid = trim($ukid['table_id']); $sfx = trim($ukid['suffix']); $pfx = trim($ukid['prefix']); + + # Major addition 6/28/08, originally missed. + # we must add the non-changing pk columns + # to the where clause! + $aWhere = array(); + foreach($keys as $key2) { + if($key2 == $key) continue; + $aWhere[] = "$pfx$key2$sfx = old.$key2"; + } + $eWhere = count($aWhere)>0 + ? "AND ".implode("\n AND ",$aWhere) + : ""; + $s1="\n" ." -- 3100 PK Change Cascade\n" ." IF new.$key <> old.$key THEN\n" ." UPDATE $tkid SET $pfx$key$sfx = new.$key\n" - ." WHERE $pfx$key$sfx = old.$key;\n" + ." WHERE $pfx$key$sfx = old.$key\n" + ." ".$eWhere.";\n" ." END IF;\n" ." -- 3100 END\n"; $this->SpecDDL_TriggerFragment( @@ -7287,7 +7301,7 @@ $this->SQL("insert into $table_id (skey_quiet) values ('Y')"); } } - + # Now run the load $this->DBB_LoadContent(false,$this->content,"",""); return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |