[TYPO3-dev] Raising Mysql requirements to 4.1?
Steffen Kamper
steffen at sk-typo3.de
Mon Oct 1 16:08:04 CEST 2007
"Martin Kutschker" <Martin.Kutschker at n0spam-blackbox.net> schrieb im
Newsbeitrag news:mailman.1.1191246885.2835.typo3-dev at lists.netfielders.de...
> ries van Twisk schrieb:
>> Hey Dmitry,
>>
>> and others..
>>
>> what if we extension t3lib_db with tree additional functions
>>
>> 1) $GLOBAL['TYPO3_DB'] -> beginTransactionBlock();
>> 2) $GLOBAL['TYPO3_DB'] -> endTransactionBlock();
>> 3) $GLOBAL['TYPO3_DB'] -> abortTransactionBlock();
>>
>> And your below function could look like:
>>
>>> if (get_resource_type($GLOBALS['TYPO3_DB']->link) == 'mysql link') {
>>> $query =
>>> $GLOBALS['TYPO3_DB']->INSERTquery('tx_realurl_urlencodecache',
>>> $insertFields);
>>> $query .= ' ON DUPLICATE KEY UPDATE tstamp=' .
>>> $insertFields['tstamp'];
>>> $GLOBALS['TYPO3_DB']->sql_query($query);
>>> }
>>> else {
>> $GLOBAL['TYPO3_DB'] -> beginTransactionBlock();
>>> $GLOBALS['TYPO3_DB']->exec_DELETEquery('tx_realurl_urlencodecache',
>>> 'url_hash='.intval($hash));
>>> $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_realurl_urlencodecache',
>>> $insertFields);
>> $GLOBAL['TYPO3_DB'] -> endTransactionBlock();
>>> }
>>
>>
>> By doing it like that we can start supporting other RDBM's much better.
>> For the native MySQL ISAM driver the tree functions above simply don't do
>> anything, with InnoDB we can also use transaction blocks. (Actually
>> MyISAM ignores transaction blocks anyways).
>
> If you care to check for the table type on Mysql you can replace it (in
> this case!) with a TABLE LOCK. But the problem is that you cannot abort
> it, so it's not a general solution.
>
> Intersting is also that the Mysql version does an UPDATE but we have
> DELETE/UPDATE pair on other DBs. Shouldn't that be a SELECT/UPDATE/INSERT
> triple?
>
> Masi
in oracle there is a "upset"-syntax
IF FOUND
THEN UPDATE
ELSE
INSERT;
in PG there is a "MERGE" syntax
vg Steffen
More information about the TYPO3-dev
mailing list