2012-02-15 4 views
0

私は私と一緒にクマ:)MySQLのトリガ、私はテーブルを持って列

一般的にはMySQLとのDBと初心者の一種だ - フィールドを持つtblfolders「barcodeID」は新しい行がテーブルに挿入されるたびに1ずつインクリメントする必要があるINTです。私はすでに私の 'id'フィールドを自動インクリメントしているので、これを自動増分フィールドにすることはできません。

AFTER INSERTトリガーでこれを実行しようとしましたが、「このストアド・ファンクション/トリガーを呼び出すステートメントで既に使用されているため、ストアド・ファンクション/トリガーでテーブル 'tblfolders'を更新できません。

テーブルに挿入する際にこのフィールドを自動インクリメントする方法に関する提案はありますか?

ありがとうございます!

+0

私は本当にトリガーについて恐れています:あなたは何か別のことをすることができますか? – vulkanino

+0

barcodeIdは、バーコードテーブルの外部キーを自動インクリメントのプライマリキーにしています... – vulkanino

+0

lolはい私は昨日トリガについて少し読んで興奮しましたが、彼らは価値があるよりもトラブルのようです私の専門知識の低レベルでやろうとしていることは、少なくとも。 – FastTrack

答えて

0

UPDATE AUTO_INCREMENTを使用して、printfののsprintfのようなものでPHPを使用して、それをフォーマット:この時

while($row = mysql_fetch_assoc($sql)) { 
    $numberOfZerosINeed = 10-strlen($row['id']); 
    $formated_id = sprintf(" %010s ", $row['id']); // zero-padding works on strings too 
    $row['barcode_id']=$formated_id; 
    $all_rows[]=$row; 
} 

あなたがフォーマットさAUTO_INCREMENT整数で列barcode_idを持っていたかのようにだポイント!

OLD ANSWER あなたは、挿入後のような何かをするためのプログラミング言語を使用することができ、何が最善かと言ってそのハード、あなたが何をしたいのかを説明する必要があり、あなたは、PHPのようなものを使用している場合は、なぜauto_increment自体は必要なデータを提供していませんか? phpであなたは挿入後のような何かをすることができます:

$sql = mysql_query("INSERT INTO tblfolders (id, othervales) VALUES ('{$id}', '{$othervalues}') "); 
$last_id = mysql_insert_id(); 
mysql_query("UPDATE tblfolders SET barcode_id='".($old_barcode_id+1)." WHERE id={$last_id} LIMIT 1 "); 
+0

さて、私は既存のauto_incrementフィールドを使うことができましたが、この 'barcodeId'フィールドには常に10文字の長さになるように0を埋め込んでおく必要があります。ところで、私はPHPを使用しています。 – FastTrack

+0

@FastTrack私の更新情報を参照して回答してください! – Neo

0

自動インクリメントの主キーを持つバーコードテーブルの外部キーを作成するとどうなりますか?

関連する問題