簡體   English   中英

當插入的值大於列長度時,將錯誤的值插入SQL Server表

[英]Incorrect value inserted into SQL server table when inserted value is greater than column length

情況:

我有一個現有的舊表[dbo]。[值],位於SQL Server 2017上。

在此表中,我有3列。

  • int tableid(主鍵)
  • 字符(8)代碼
  • 字符(7)說明

代碼和描述都是自定義數據類型,但都只是char(8),char(7),沒有其他邏輯。

行動

如果我在此表中插入列代碼的插入值大於8個字符的值,則會在該列中插入*。

沒有錯誤或警告。

我查看了觸發器,約束,策略,表的創建腳本,自定義數據類型。 我無法找到任何邏輯說明截斷設置值= *

在將值保存到表之前,sql server的哪一部分會修改值?

如果您還使用了不正確的數據類型並從int隱式轉換,則會看到此信息。

CREATE TABLE #T(C CHAR(8))

INSERT INTO #T VALUES (1111111111);

SELECT *
FROM #T

這是記錄的行為

解。 使用字符串

INSERT INTO #T VALUES ('1111111111');
/*String or binary data would be truncated.*/

這是傳統行為 ,不太可能改變

暫無
暫無

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

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