簡體   English   中英

如何防止MySQL數值更改? (phpMyAdmin)

[英]How can I prevent MySQL numeric values from changing? (phpMyAdmin)

我在phpMyAdmin上的MySQL中創建了表INVOICES。

CREATE TABLE INVOICES(
 INVOICENUMBER       NUMERIC(3) NOT NULL PRIMARY KEY,
 JOBID               NUMERIC(3) NOT NULL,
 CURRENTDATE         DATE,
 CHARGEDETAILS       VARCHAR(200),
 CHARGESUBTOTAL      NUMERIC(3,2) NOT NULL CHECK (CHARGESUBTOTAL >= 0),
 GRANDTOTAL          NUMERIC(3,2) NOT NULL CHECK (GRANDTOTAL >= 0),
 FINALWORKLOG        VARCHAR(200),
 TERMS               VARCHAR(200),
 INDEX (JOBID)
 );

但是,嘗試向表中添加記錄時遇到了問題。 第一個插入命令正確輸入所有內容,但是第二個命令將表中的數值(CHARGESUBTOTAL和GRANDTOTAL)轉換為9.99。 我不確定是什么原因引起的,所以有人可以幫我嗎?

INSERT INTO INVOICES VALUES (1,1,'2014-11-15','None as the job was cancelled.',0.00,0.00,'The job was cancelled.','None.');
INSERT INTO INVOICES VALUES (2,2,'2014-11-15','£31.80 for total work.',31.80,35.00,'Employee took care of all the expected duties.','Payment should be undertaken within 7 days of receipt.');

NUMERIC(3,2)表示-整數3位,小數點后2位。

http://dev.mysql.com/doc/refman/5.5/zh-CN/fixed-point-types.html

因為值(即31.80 )超出范圍,並且最大值存儲在9.99列中。

NUMERIC(3,2)

可以包含3位數字-逗號前一位和兩位后一位。

問題是列數據類型: NUMERIC(3,2)

看到這里: http : //dev.mysql.com/doc/refman/5.0/en/fixed-point-types.html

3表示將存儲3個有效數字(即0-999或0-99.9或0-9.99)。 2是小數點后的位數(從sf數開始),因此3,2表示0-9.99,而4,1表示0-99.99,依此類推。

根據您的業務需要將其更改為NUMERIC(10,2)或類似的名稱。

更改此:

 CHARGESUBTOTAL      NUMERIC(3,2) NOT NULL CHECK (CHARGESUBTOTAL >= 0),
 GRANDTOTAL          NUMERIC(3,2) NOT NULL CHECK (GRANDTOTAL >= 0),

至:

 CHARGESUBTOTAL      NUMERIC(4,2) NOT NULL CHECK (CHARGESUBTOTAL >= 0),
 GRANDTOTAL          NUMERIC(4,2) NOT NULL CHECK (GRANDTOTAL >= 0),

文件資料

問題出在NUMERIC(3,2)上。 使用NUMERIC(5,2)進行更改以使工作正常。

說明:

在DECIMAL列聲明中,可以(通常是)指定精度和小數位數; 例如:

薪水DECIMAL(5,2)在此示例中,5是精度,2是小數位數。 精度表示值存儲的有效位數,小數位數表示小數點后可存儲的位數。

標准SQL要求DECIMAL(5,2)能夠存儲具有五位數字和兩個小數的任何值,因此可以存儲在薪水列中的值的范圍是-999.99到999.99。

參考鏈接: http : //dev.mysql.com/doc/refman/5.5/en/fixed-point-types.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM