mysqlのintフィールドは負の数が許されていませんか?より具体的には、負の数がフィールドに挿入されている場合は、ゼロを挿入します。私たちはスコアリングシステムを持っており、人々が否定的なスコアを持つことを許さないので、私はこれを尋ねます。だから、彼らのスコアが0になったら、代わりにゼロを挿入するだけです。私はこれを行うには、ユーザーのスコアを照会することなく、それがゼロになるかどうかをチェックすることを試みている。mysqlは負の数を防ぎます
答えて
他人が推薦しているDDLの変更(INT UNSIGNED)に加えて、アプリケーションロジックも変更します。言う:
私はそれが怒鳴るゼロに落ちるかどうかを確認するために、ユーザーのスコアを照会することなく、これをやろうとしている
あなたは別々に明示的にチェックする必要はありません。クエリ:
UPDATE your_table
SET score = GREATEST(score + ?, 0) -- This '?' is the adjustment to the score
WHERE user_id = ?
アプリケーションでscore
をゼロ以下に更新することはできません。また、SQLモードによってエラーや警告が生成されることもありません。
はい。 int
フィールドを作成し、UNSIGNED
とマークすることができます。 MySQL 5.0 Reference Manualから
:
INT[(M)] [UNSIGNED] [ZEROFILL]
A normal-size integer. The signed range is -2147483648 to 2147483647.
The unsigned range is 0 to 4294967295.
しかし、符号なしint列に-ve整数を挿入しようとするとエラーがスローされません – Raaghu
MySQLは整数型のためUNSIGNED
修飾子を持っています。
負の値はゼロにクランプされますが、警告を生成します:あなたは、厳密なSQLモードで実行している場合は
mysql> create table test (id int(5) unsigned not null);
Query OK, 0 rows affected (0.05 sec)
mysql> insert into test values (-1), (5), (10);
Query OK, 3 rows affected, 1 warning (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 1
mysql> select * from test;
+----+
| id |
+----+
| 0 |
| 5 |
| 10 |
+----+
3 rows in set (0.01 sec)
エラーが発生した場合、警告によりmysqlエラーが発生しますか? – user962449
@ user962449私は知らない、私はそれをキャッチエラーを有効にしたことはありません。なぜあなたはそれを試してみませんか? – Alnitak
が、これはエラーと失敗する挿入/更新をスローしていました。
私はこの種のもののためにユーザ定義関数を作成します。 (この場合、非常に些細な "if(expr1、expr2、expr3)"はトリックを行います
- 1. CKEDITOR.setDataは.on関数でのイベントの添付を防ぎます
- 2. Javaソケットはパネルを防ぎますか?
- 3. ASP.NETはブラウザ 'バック'を防ぎます
- 4. AnkhSVNは自動マージを防ぎます
- 5. 防ぎsudoを
- 6. 防ぎテキストボックス(ExtJSの)
- 7. 負の指数関数近似:カーブが高すぎる
- 8. PHPはhtmlspecialcharsがURLの数字を変換するのを防ぎます
- 9. jQuery UIダイアログ(モーダル)、ポストバックを防ぎます
- 10. 防ぎアンカー行動
- 11. ASP.net RequiredFieldValidatorがポストバックを防ぎません
- 12. はWidgetProviderのonUpdateのトリガーを防ぎます
- 13. UISliderのタッチはUIScrollViewのスクロールを防ぎます
- 14. scrollviewerのリストビューはスクロールビューワのスクロールを防ぎます
- 15. カスタムバリデーターは起動しますが、ポストバックを防ぎません
- 16. SerialPort + CF 2.0はデータの損失を防ぎます
- 17. JUnitのテストメソッドは電子メール送信を防ぎます
- 18. 条件が偽の場合はデフォルトを防ぎます
- 19. jQueryモーダルダイアログは、ドキュメントイベントの発生を防ぎます。
- 20. elasticsearchはプライマリーシャードの検索要求を防ぎます
- 21. AJAXとPHPは機能の改ざんを防ぎます
- 22. 何でもSliderは無限のサムネイルカルーセルループを防ぎます
- 23. MVC Razor RenderPageは、Html.RenderPartialのダウンストリーム使用を防ぎます。
- 24. DIV内のSPANはテキストオーバーフローを防ぎます:省略記号
- 25. Linuxはスタックとヒープの相互増殖を防ぎますか?
- 26. 非表示のタブバービューは接触を防ぎます
- 27. XAML - InputBindingsはMouseLeftButtonDownイベントの発生を防ぎます
- 28. Asp.net MVCはURLの自動変換を防ぎます
- 29. MySQLの複数の更新が長すぎます
- 30. 防ぎ自動スクロールここ
これは非常に便利なアイデアです。いくつかのフィールドを符号なしに変更しましたが、既存のエラー処理メソッドをトリガし、それらを削除する必要がありました。これは、チェックする無意味なクエリ/接続を避けるために便利です。 – M1ke