<?php /** * * 现在简单实现,可以处理成,根据对应的表,生成对应的序列进行生成,主要同步自增id * */ class OracleTools { /** * 通过序列获取最新的id * 如果制定表,如果表不存在,则创建新表。并以原表的id+1000的数据添加. * 可以单独指定需要序列的表名和id */ public static function getNewId($seqname = "common", $id = "id", $tablename = "", $maxvalue = 0, $startbyzero = false) { $sseqname = $seqname; if (empty ( $tablename )) $tablename = $seqname; $seqname = "O2O_SEQ_{$seqname}"; $exists = sql_fetch ( "SELECT count(1) existsrow FROM all_sequences WHERE sequence_name = '$seqname' AND sequence_owner = '" . Yii::app ()->db->username . "'", 'existsrow' ); if (! $exists) { $lastid = 1; if (! $startbyzero) { $lastid = sql_fetch ( "SELECT {$id} FROM {$tablename} WHERE ROWNUM =1 ORDER BY {$id} DESC ", $id ); $lastid += 1000; } if (! $maxvalue) { $maxvalue = '9999999999999999'; } sql_execute ( "CREATE SEQUENCE {$seqname} start WITH {$lastid} increment BY 1 MAXVALUE {$maxvalue} minvalue 1 cycle" ); } $id = sql_fetch ( "SELECT {$seqname}.nextVal newid FROM dual", 'newid' ); return $id; } public static function dropSeq($seqname = "common") { $seqname = "O2O_SEQ_{$seqname}"; sql_execute ( "DROP SEQUENCE {$seqname} " ); } }