phpとmysqlを使用してフィールド値を安全にインクリメントしたい。
どのタイプのテーブル/フィールドを使用する必要がありますか?
使用しなければならないMySQLの最小バージョンはありますか?
MySQLのこの安全なトランザクションのSQLコードは何ですか?
phpとmysqlを使用してフィールド値を安全にインクリメントしたい。
どのタイプのテーブル/フィールドを使用する必要がありますか?
使用しなければならないMySQLの最小バージョンはありますか?
MySQLのこの安全なトランザクションのSQLコードは何ですか?
どのタイプの「テーブル」とは、ストレージエンジンを意味すると思います。ミューテーションをサポートするもの(つまり、「アーカイブ」や「ブラックホール」ではない)
任意の数値フィールド(tinyint、int、floatなど)で問題ありません。とはいえ、特別なPHPコードはなく、目的のフィールドをインクリメントするためのSQLだけです。
UPDATE table SET field = field + 1 WHERE [...]
トランザクションが必要な場合は、上記のクエリをトランザクションにパックします。MySQLのバージョンについては、@hszに同意します。可能な限り最新のバージョンを使用してください。
主キーについて話している場合は、id
列をprimary
とに設定しますauto_increment
。
増加するフィールドは次のようになります。
UPDATE table SET field = field + 1 WHERE id = 9
MySQLバージョンについて-可能な限り最新のものを使用してください。;)
> 5.0
大丈夫です。
1.どのタイプのテーブル/フィールドを使用する必要がありますか?
->テーブルのタイプは、アプリケーションで何を計画しているかによって異なります。InnodbまたはMyisamである可能性があります。インクリメント/デクリメントできるように、数値列を使用することをお勧めします。負の数を許可する場合は、符号なしにしないでください。
列の長さを宣言する際に役立つと思われる制限は次のとおりです。
TINYINT (length) - 1 - Integer with unsigned range of 0-255 and a signed range from -128-127
SMALLINT (length) - 2 - Integer with unsigned range of 0-65535 and a signed range from -32768-32767
MEDIUMINT(length) - 3 - Integer with unsigned range of 0-16777215 and a signed range from -8388608-8388607
INT(length) - 4 - Integer with unsigned range of 0-429467295 and a signed range from -2147483648-2147483647
BIGINT(length) - 8 - Integer with unsigned range of 0-18446744 and a signed range from
-9223372036854775808-9223372036854775807
2.使用しなければならないMySQLの最小バージョンはありますか?
->自動インクリメントを使用するだけですか?あなたは最新バージョンを使用するのに十分です。可能であれば、5.2.4を超えるものを提案します。
3.MySQLのこの安全なトランザクションのSQLコードは何ですか?
->申し訳ありませんが、現時点ではこれに対する回答はありません。