这是我的疑问:
CREATE TABLE [dbo].[Veiculos]
(
[IDCar] INT IDENTITY (1, 1) NOT NULL,
[Matricula] VARCHAR (8) NOT NULL,
[Marca] VARCHAR (30) NULL,
[Modelo] VARCHAR (30) NULL,
[Cor] VARCHAR (15) NULL,
[Cilindrada] INT NULL,
[Estado] CHAR (1) NULL,
[Preco] MONEY NULL,
PRIMARY KEY CLUSTERED ([IDCar] ASC),
UNIQUE NONCLUSTERED ([Matricula] ASC),
CHECK ([Estado]='Usado' OR [Estado]='Novo')
);
出于某种原因,每当我尝试将值直接添加到表中时,它都会出现以下错误:
"第1行中的数据未提交 错误来源:.Net SqlCliente数据提供者。
错误消息:字符串或二进制数据将被截断。"
这是一个大学项目,我仍然是SQL新手,非常感谢任何帮助。
答案 0 :(得分:2)
estado
定义为char(1)
,但您尝试将值'Novo'
。
放入单个字符或重新定义列宽。根据您的check
约束条件,您可能希望将estado
定义为varchar(10)
或其他内容:
alter table [dbo].[Veiculos] alter column estado varchar(10);
答案 1 :(得分:0)
您的某个字段不足以保存数据。检查字符串的长度或int值是否大于允许的范围。
https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql
https://docs.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql
答案 2 :(得分:0)
我看到两件事
IDCar need to have a value
和
[Estado] CHAR (1)
但您尝试输入的值为4。请尝试按以下方式更新
[Estado] CHAR (4)