Ste*_*ans 14 sql-server error-handling
我有这张桌子:
CREATE TABLE Vendors
(
VendorID NUMERIC(10) NOT NULL,
VendorName CHAR(50) NOT NULL,
VendorAddress VARCHAR(30) NULL,
VendorCityName VARCHAR(20) NOT NULL,
VendorStateName CHAR(2) NOT NULL,
VendorZip VARCHAR(10) NULL,
VendorContactName CHAR(50) NOT NULL,
VendorContactPhone VARCHAR(12) NOT NULL,
VendorContactEmail VARCHAR(20) NOT NULL,
VendorSpecialty CHAR(20) NOT NULL
CONSTRAINT VendorsPK PRIMARY KEY (VendorID)
);
Run Code Online (Sandbox Code Playgroud)
这个插入:
INSERT INTO Vendors(VendorID, VendorName, VendorAddress,
VendorCityName, VendorStateName, VendorZip, VendorContactName,
VendorContactPhone, VendorContactEmail, VendorSpecialty)
VALUES(151330, 'Hyperion', '77 West 66th Street', 'New York',
'NY', 10023, 'John Hinks', '212-337-6564',
'jhinks@hyperionbooks.com', 'Popular fiction')
Run Code Online (Sandbox Code Playgroud)
为什么这句话会产生8152错误?
Aar*_*and 30
VendorContactEmail只有20个字节.第一行(jhinks@hyperionbooks.com)上的电子邮件地址长于24字节.许多电子邮件地址会更长.谁决定只在电子邮件地址栏中允许20个字符?根据标准,这应该是VARCHAR(320)- 64个字符用于localpart + 1用于@ + 255用于域.
无论如何强制操作导致截断执行
SET ANSI_WARNINGS OFF;
-- Your operation TSQL here.
SET ANSI_WARNINGS ON;
Run Code Online (Sandbox Code Playgroud)