2

ユーザーは sql クエリを送信し、場合によっては (通常はサーバーがビジー) sql 行が重複します。防ぎたい。たとえば、ユーザーが同じクエリを同時に送信した場合、SQL は 1 つのクエリのみを受け入れます。私はそれを常に削除したくありません.. phpmyadminでそれを行うことはできますか?

できない場合は、この php の問題: http://www.speedyshare.com/S4QRj/Automation.php

私はこのコードで考えます:

    private function returnunitsComplete() {
    global $database;
    $time = time();
    $q = "SELECT * FROM ".TB_PREFIX."movement, ".TB_PREFIX."attacks where ".TB_PREFIX."movement.ref = ".TB_PREFIX."attacks.id and ".TB_PREFIX."movement.proc = '0' and ".TB_PREFIX."movement.sort_type = '4' and endtime < $time";
    $dataarray = $database->query_return($q);


    foreach($dataarray as $data) {

    $tribe = $database->getUserField($database->getVillageField($data['to'],"owner"),"tribe",0);

    if($tribe == 1){ $u = ""; } elseif($tribe == 2){ $u = "1"; } elseif($tribe == 3){ $u = "2"; } elseif($tribe == 4){ $u = "3"; } else{ $u = "4"; }
    $database->modifyUnit(
            $data['to'],
            array($u."1",$u."2",$u."3",$u."4",$u."5",$u."6",$u."7",$u."8",$u."9",$tribe."0","hero"),
            array($data['t1'],$data['t2'],$data['t3'],$data['t4'],$data['t5'],$data['t6'],$data['t7'],$data['t8'],$data['t9'],$data['t10'],$data['t11']),
            array(1,1,1,1,1,1,1,1,1,1,1)
    );
    $database->setMovementProc($data['moveid']);
    }

ユニットとレポートが重複して返されることがあります。私の悪い英語でごめんなさい。ありがとうございました...

4

2 に答える 2

2

col1col2テーブルのtbl1ペアに重複する値のペアが含まれないようにする場合(ただし、各列自体に含まれる可能性があります)、必要な一意のインデックスを次のように作成できます。

ALTER TABLE tbl1
  ADD UNIQUE KEY(col1, col2)

ドキュメント(MySQL):http ://dev.mysql.com/doc/refman/5.1/en/alter-table.html

于 2012-12-29T11:53:21.983 に答える
2

および/またはCONSTRAINTのようにテーブルで使用します。彼らは同じ値を受け入れません。PRIMARY KEYUNIQUE KEY

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
PRIMARY KEY (P_Id)  //primary key
)

詳しくはこちら

于 2012-12-29T11:42:09.173 に答える