麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
请教 不使用auto_increment的情况下,怎么操作table
悬赏分:20 - 2007年08月15日

以前一直使用auto_increment 所以插入数据时seq id 根本不要操作
不使用auto_increment 也不是使用numeric(10,0) identity,比如让数据表的id自动增加我采取这样的方法,请大家看一下,思路是否正确。程序是否合理!拜托了!

创建一个seq记录表
create table sequence_id (
table_name varchar(128) not null ,
t_seq int not null
)

我写下了这样一个类来取现在需要插入的id
[PHP]<?
# mac liu 2005-2-17
class seq{
var $table_name;
var $seq;
//return seq
function getTSEQ($table_name)
{
$this->table_name = $table_name;
$this->checkRecord();
$this->getNowID();
$this->updateNowID();
return $this->seq;
}

//get seq
function getNowID(){
$strSQL = "SELECT t_seq FROM sequence_id WHERE table_name LIKE '".$this->table_name."'";
$dbResult = $GLOBALS["nowDB"]->BSDB_query($strSQL);
$dbResRow = $GLOBALS["nowDB"]->BSDB_fetch_array($dbResult);
$this->seq = $dbResRow[t_seq]+1;
}

//update seq
function updateNowID(){
$strSQL = "UPDATE sequence_id
SET t_seq=$this->seq
WHERE table_name LIKE '".$this->table_name."'";
$GLOBALS["nowDB"]->BSDB_query($strSQL);
}

function checkRecord(){
$strSQL = "SELECT COUNT(*) AS cnt FROM sequence_id
WHERE table_name LIKE '".$this->table_name."'";
$dbResult = $GLOBALS["nowDB"]->BSDB_query($strSQL);
$dbResRow = $GLOBALS["nowDB"]->BSDB_fetch_array($dbResult);
if ($dbResRow[cnt] < 1){
$strSQL = "
INSERT INTO sequence_id
(table_name,t_seq)
VALUES
('".$this->table_name."',1000)
";
$GLOBALS["nowDB"]->BSDB_query($strSQL);
}

}
}
?>

[/PHP]

使用如下,比如在job_info插入数据
[PHP]
<?
$jiSEQ = new seq;
$now_seq = $jiSEQ->getTSEQ("job_info");
$sql = "INSERT INTO ".TABLE_NAME." (n_jid,....) VALUES ($now_seq,.....)";
?>
[/PHP]

提问者:buzzard   08-15 15:03
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
61 + 7 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM