Project

General

Profile

Feature #5345

Updated by Carsten Rose 7 months ago

h2. Wunsch 

 Falls ein UPDATE [keine] Records veraendert, waere es gut wenn stattdessen subqueries ausgefuehrt werden - und die Entscheidung wird in PHP evaluiert, ohne das eine weitere Query abgefeuert werden muss. Vergleichbar mit althead (wird ausgefuehrt sobald das sql keine Records selektiert). 
 Damit wuerden Queries der Form UPDATE ... WHERE 1=0 (mit '0={{<level>.line.count}}') gar nicht erst gefeuert. 

 h2. Vorschlag Vorschlag: 

 <pre> 
 10.sql = UPDATE .... 
 10.affected = 0|1|>0|>1|always 

 20.sql = INSERT ... SELECT ... 
 20.affected = 0|1|>0|>1|always 

 30.sql = DELETE ... 
 40.sql = SELECT 
 </pre> 

 Bsp. 1) 
 <pre> 
 10.sql = UPDATE ... WHERE 1=0 
 10.affected = >0 
 10.head = update 
 10.althead = kein update 
 </pre> 

 Ausgabe: kein update 

 Bsp. 2) 
 <pre> 
 10.sql = UPDATE Person SET name='john' LIMIT 1 
 10.affected = >0 
 10.head = update 
 10.althead = kein update 
 </pre> 

 Ausgabe: update 


 h2.    Anmerkungen 

 * Der Wert von affected kann auch eine Query der From '10.affected = {{SELECT IF(20.line.insertId > 100, 'no','yes') }}' sein. 
 * 'affected' wird ausgewertet nachdem query gefeuert wurde. 
 * head / tail / althead / alttail / altsql wird in Abhaengigkeit von affected ausgegeben. 
 * affected kann auch bei 'SELECT' angegeben werden. Mit 'affected=always' wird wir child einmal getriggert, auch wenn das keine records selektiert wurden. 
 * Hinweis: bei updates die erfolgreich sind (Record existiert), aber keine Veraenderung stattgefunden hat, kommt vermutlich 'affected_rows=0' zurueck. Bei folgendem Klassiker sollte die Aktualisierung Aktuailsierung von `modified` dem vorbeugen (BTW: die Verwendung von altsql ist oben nicht beschrieben, waere aber nett) 
 <pre> 
 10 { 
   sql = UPDATE EzBookingImport SET `data`='{{dataC:R}}', modified=modified + INTERVAL 1 SEC WHERE ez_start='{{thisMonday:R}}' AND ez_objectID='{{ez_objectID:R}}'  
   altsql = INSERT INTO EzBookingImport (`data`, `ez_start`, `ez_objectID`, `raum_id`) 
      			 VALUES ('{{dataC:R}}', '{{thisMonday:R}}' , '{{ez_objectID:R}}', '{{raId}}' ) 
 } 

 </pre> 

Back