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コードは何ですか?
->申し訳ありませんが、現時点ではこれに対する回答はありません。