我有一个SQLExpress的本地安装,并使用SQL Server Management Studio访问它。
我在SSMS中创建了一个新数据库BirdSite
,其中包含一个表TMasterCountry
,其中包含以下列:
Id (int)
CountryName (varchar(50))
其中Id
是主要的自动递增键。
当我在对象资源管理器中使用Script table as...
选项时,我可以使用以下SQL查看空表:
USE [BirdSite]
GO
SELECT [Id]
,[CountryName]
FROM [dbo].[TMasterCountry]
GO
没有任何问题。
但是,使用相同的选项尝试插入一些数据,会显示此SQL:
USE [BirdSite]
GO
INSERT INTO [dbo].[TMasterCountry]
([CountryName])
VALUES
(<CountryName, varchar(50),>)
GO
所以我将VALUES
下的行更改为
(CountryName, 'test')
但是当我尝试运行代码时,我得到了这些错误:
Msg 207,Level 16,State 1,Line 4
列名称无效&#39; CountryName&#39;。
Msg 110,Level 15,State 1,Line 4
INSERT语句中的列少于VALUES子句中指定的值。 VALUES子句中的值数必须与INSERT语句中指定的列数相匹配。
有谁知道这里会发生什么?该列显然确实存在,因为我可以SELECT
数据就好了。
关于SO的一些类似问题,我尝试重新启动SSMS并尝试刷新本地智能感知缓存,但运气好的话。我也尝试用方括号括起CountryName
,但结果相同。
答案 0 :(得分:6)
将其更改为:
USE [BirdSite]
GO
INSERT INTO [dbo].[TMasterCountry]
([CountryName])
VALUES
('test')
GO
<CountryName, varchar(50),>
指的是列的名称及其数据类型。
答案 1 :(得分:5)
语法错误;应该是
INSERT INTO [dbo].[TMasterCountry]
([CountryName])
VALUES
('test')
答案 2 :(得分:3)
您需要使用以下值替换<
和>
之间的整个内容:
INSERT INTO [dbo].[TMasterCountry]
([CountryName])
VALUES
('test')