0

次のフィールドを持つテーブルがあります: gallery(picID, picTimeStamp, location).

私が欲しいのは、誰かが新しい写真をギャラリーにアップロードしているときに、その場所が取得したのと同じ値をpicID取得することです (そしてpicID、自動インクリメントによってその値を取得します)。

私が試してみました:

"INSERT INTO gallery(picID, picTimeStamp, location) VALUES (null,'.time().',picID)"

しかし、それは機能していません。エラーは発生しません。場所には常にゼロが含まれています。

ありがとう!

4

2 に答える 2

0

おそらく、このようなトリガーを使用する必要があります

CREATE TRIGGER trigger_name BEFORE INSERT ON gallery FOR EACH ROW 
BEGIN 
   DECLARE next_id INT; 
   SET next_id = (SELECT AUTO_INCREMENT FROM gallery WHERE TABLE_NAME='gallery'); 
   SET NEW.location=next_id; 
END 

編集: auto_increment 番号はレコードが挿入された後にのみ設定されるため、挿入トリガーの前ではなく後にする必要があります。ごめんなさい!

于 2012-08-29T16:07:59.203 に答える
-1

テーブルは次のようになります。

id               |  int        |  primary key/autoincrement
order            |  int        |  index
picTimeStamp     |  timestamp

次に、下に新しいエントリを作成する場合は、注文番号を GET で渡します。

function createBelow(){
if(isset($_GET["orders"])){  
    $orders = $_GET["orders"];
    $query = "UPDATE links SET orders=orders+1 WHERE orders>$orders ORDER BY     orders DESC"; 
    mysql_query($query);
    $query = "INSERT INTO `mydb`.`mytable` (`orders`) VALUES ($orders+1);";
    mysql_query($query);
}

}

デフォルト値は id とタイムスタンプを処理します。これらは入力しません。

于 2012-08-29T16:08:06.077 に答える