暫定対応
commonのupdateメソッドをmssql.php内でこんな感じでオーバーライドしてみた。
function update($table, $data, $condition, $connect) { $count = count($data); // 対象テーブルのIDENTITY列名の取得 $get_identity_sql = "SELECT sysobjects.name AS tbl_name, syscolumns.name AS "; $get_identity_sql .= " col_name FROM syscolumns LEFT OUTER JOIN sysobjects "; $get_identity_sql .= " ON sysobjects.id = syscolumns.id "; $get_identity_sql .= " WHERE (sysobjects.xtype = 'U') "; $get_identity_sql .= " AND (syscolumns.status & 0x80 <> 0)"; $get_identity_sql .= " AND (sysobjects.name='$table')"; $target_id_column = mssql_query($get_identity_sql,$connect); $target_id_column_array = mssql_fetch_array($target_id_column); if(!empty($target_id_column_array)){ $target_column_name = $target_id_column_array['col_name']; } else { $target_column_name = false ; } $query = "UPDATE $table SET "; $i = 0; foreach ($data as $key => $value) { if ($key != $target_column_name) {//$keyが$target_column_nameと一致する場合はバイパス if ($i > 0) { $query .= ","; } $query .= $this->CreateCondition($key, $value); } $i++; } $query .= " WHERE " . $this->parseCondition($condition); return $this->query($query, $connect); }
これで一応は処理が通るようです。
delメソッドはcommonのままで正常に動作しますので、これで一通りは動く物になったかなぁ。