如何在SQL Server数据库中添加自动增量主键?

发布于 2024-11-25 08:37:19 字数 615 浏览 1 评论 0原文

我设置了一个当前没有主键的表。我需要做的就是添加一个主键,不为 null,auto_increment

我正在使用 Microsoft SQL Server 数据库。我知道它不能用单个命令完成,但我尝试的每个命令都会返回语法错误。

编辑 ---------------

我已经创建了主键,甚至将其设置为非空。但是,我无法设置auto_increment

我尝试过:

ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment

我正在使用 NVARCHAR 因为它不允许我在 int 下设置 NOT NULL

I have a table set up that currently has no primary key. All I need to do is add a primary key, no null, auto_increment.

I'm working with a Microsoft SQL Server database. I understand that it can't be done in a single command but every command I try keeps returning syntax errors.

edit ---------------

I have created the primary key and even set it as not null. However, I can't set up the auto_increment.

I've tried:

ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment

I'm using NVARCHAR because it wouldn't let me set NOT NULL under int

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

罪#恶を代价 2024-12-02 08:37:19

它可以通过单个命令完成。您需要为“自动编号”设置 IDENTITY 属性:

ALTER TABLE MyTable ADD mytableID int NOT NULL IDENTITY (1,1) PRIMARY KEY

更准确地说,要设置命名表级别约束:

ALTER TABLE MyTable
   ADD MytableID int NOT NULL IDENTITY (1,1),
   CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID)

请参阅 ALTER TABLE 和 IDENTITY

It can be done in a single command. You need to set the IDENTITY property for "auto number":

ALTER TABLE MyTable ADD mytableID int NOT NULL IDENTITY (1,1) PRIMARY KEY

More precisely, to set a named table level constraint:

ALTER TABLE MyTable
   ADD MytableID int NOT NULL IDENTITY (1,1),
   CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID)

See ALTER TABLE and IDENTITY on MSDN

﹏雨一样淡蓝的深情 2024-12-02 08:37:19

如果表已经包含数据并且您想要将其中一列更改为identity:

首先创建一个具有相同列的新表并指定主键-kolumn:

create table TempTable
(
    Id int not null identity(1, 1) primary key
    --, Other columns...
)

然后使用a将原始表中的所有行复制到新表标准insert语句。

然后删除原来的表。

最后使用 sp_renameTempTable 重命名为您想要的任何名称:

http://msdn.microsoft.com/en-us/library/ms188351.aspx

If the table already contains data and you want to change one of the columns to identity:

First create a new table that has the same columns and specify the primary key-kolumn:

create table TempTable
(
    Id int not null identity(1, 1) primary key
    --, Other columns...
)

Then copy all rows from the original table to the new table using a standard insert-statement.

Then drop the original table.

And finally rename TempTable to whatever you want using sp_rename:

http://msdn.microsoft.com/en-us/library/ms188351.aspx

小姐丶请自重 2024-12-02 08:37:19

您还可以通过 SQL Server Management Studio 执行此操作。

右键单击您选择的表 ->修改

右键单击要设置为 PK 的字段 -->设置主键

在“列属性”下,将“身份规范”设置为“是”,然后指定起始值和增量值。

然后,将来如果您希望能够编写此类内容的脚本,您可以右键单击刚刚修改的表并选择

“脚本表为”-->创建至

以便您可以亲自查看执行此操作的正确语法。

You can also perform this action via SQL Server Management Studio.

Right click on your selected table -> Modify

Right click on the field you want to set as PK --> Set Primary Key

Under Column Properties set "Identity Specification" to Yes, then specify the starting value and increment value.

Then in the future if you want to be able to just script this kind of thing out you can right click on the table you just modified and select

"SCRIPT TABLE AS" --> CREATE TO

so that you can see for yourself the correct syntax to perform this action.

猥︴琐丶欲为 2024-12-02 08:37:19

如果你有专栏,那就很容易了。

使用设计器,您可以将列设置为标识(1,1):右键单击表→设计→部分左侧(右键单击)→属性→在标识列中,选择#column。


属性

在此处输入图像描述

身份列

在此处输入图像描述

If you have the column it's very easy.

Using the designer, you could set the column as an identity (1,1): right click on the table → design → in part left (right click) → properties → in identity columns, select #column.


Properties:

enter image description here

Identity column:

enter image description here

岁吢 2024-12-02 08:37:19

在 SQL Server 2008 中:

  • 右键单击​​表
  • 转到设计
  • 选择数字数据类型
  • 将名称添加到新列
  • 将身份规范设置为“是”

In SQL Server 2008:

  • Right click on table
  • Go to design
  • Select numeric datatype
  • Add Name to the new column
  • Make Identity Specification to 'YES'
长途伴 2024-12-02 08:37:19

你可以试试这个...

ALTER TABLE Your_Table
 ADD table_ID int NOT NULL PRIMARY KEY auto_increment;

you can try this...

ALTER TABLE Your_Table
 ADD table_ID int NOT NULL PRIMARY KEY auto_increment;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文