插入行返回错误

时间:2017-08-17 15:14:08

标签: sql sql-server database

我正在尝试在现有表中插入行,这会自动生成id-primary键。即使我将id遗漏,insert也会返回错误。回顾创建表是

CREATE TABLE [dbo].[mytable](
[Id] [uniqueidentifier] NOT NULL,
[col2] [nvarchar](max) NULL,
[col3] [nvarchar](max) NULL,
[col4] [nvarchar](max) NULL,
[col5] [nvarchar](max) NULL,
CONSTRAINT [PK_dbo.DataFields] PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO

如何在此表中插入行?

感谢。

2 个答案:

答案 0 :(得分:0)

使用NewID()函数生成唯一标识符。或者如果您已经生成了唯一ID,只需将其作为字符串数据插入,系统将隐式将其转换为uniqueidentifier类型(提供的格式正确且有效),或者您可以根据需要显式转换/转换。 CONVERT(UNIQUEIDENTIFIER, Value)

此链接显示了一个工作示例:将值插入mytable表... http://rextester.com/QEIY13362

CREATE TABLE [mytable](
[Id] [uniqueidentifier] NOT NULL,
[col2] [nvarchar](max) NULL,
[col3] [nvarchar](max) NULL,
[col4] [nvarchar](max) NULL,
[col5] [nvarchar](max) NULL,
CONSTRAINT [PK_dbo.DataFields] PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
);

insert into mytable (ID, col2,col3,col4,col5) values (newID(), 'Test','Test2','Test3','Test4');

insert into mytable (ID, col2,col3,col4,col5) values ('a3ce8a7d-9b7e-428a-ab7d-948f81e3926a', 'Test','Test2','Test3','Test4');

Select * from mytable;

答案 1 :(得分:0)

我认为这取决于您使用哪种技术。 如果是oracle,则可以使用序列作为唯一标识符。 有时它也可以使用这样的东西:

insert into mytable (col2,col3,col4,col5) 
   values ('Test','Test2','Test3','Test4');

或者您可以在其中一条评论中使用newId()。

如果SQL服务器那么你可以像这样使用自动增量:

 Id  INT NOT NULL IDENTITY(10000000, 1) PRIMARY KEY, 

然后当你插入时我就像我说的那样不提ID。