我正在尝试在现有表中插入行,这会自动生成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
如何在此表中插入行?
感谢。
答案 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。