我如何auto increment在primary key一个SQL Server数据库表,我已经通过论坛看看,但不能看到.
我查看了属性,但看不到一个选项,我看到了一个答案,你去了Identity规范属性并将其设置为是并设置Identity increment为1,但该部分显示为灰色,我无法更改不,是的.
必须有一个简单的方法来做到这一点,但我找不到它.
作为标题,我有一个已经填充150000条记录的现有表.我添加了一个Id列(当前为null).
我假设我可以运行查询以使用增量数填充此列,然后设置为主键并启用自动增量.这是正确的方法吗?如果是这样,我如何填写初始数字?
我有一个SQL数据库表,它有35条现有记录.人在这个表中的字段被称为Name,nvarchar(100),not null
但是,由于最近的更改,我需要使此列可以为空.
当我在SQL Server Management Studio中更改列以允许空值,并转到保存我的更改时,我收到以下错误:
不允许保存更改.您所做的更改需要删除并重新创建以下表
如何允许自动删除和重新创建?
我有一张大约1000万行的表.我们刚从SQL Server Management Studio的另一个数据库导入它.它创建表但主键列上没有标识和主键.
我可以添加主键但无法添加标识.当我在设计师中做这件事的时候,它一直都是超时的.即使我将时间设置为0.
我需要创建另一个列集主键和标识,从旧复制数据,删除旧列并重命名新列.
任何人都可以告诉我这样的大桌子最好的方法是什么,没有额外的过热?
不工作
ALTER TABLE ProductInProduct ALTER COLUMN Id KEY IDENTITY (1, 1);
Run Code Online (Sandbox Code Playgroud)
检查图像
我有一个表ProductInProduct希望它的id应该是唯一的.. 
我希望能够将带有标识列的表中的数据插入到SQL Server 2005中的临时表中.
TSQL看起来像:
-- Create empty temp table
SELECT *
INTO #Tmp_MyTable
FROM MyTable
WHERE 1=0
...
WHILE ...
BEGIN
...
INSERT INTO #Tmp_MyTable
SELECT TOP (@n) *
FROM MyTable
...
END
Run Code Online (Sandbox Code Playgroud)
上面的代码使用标识列创建了#Tmp_Table,然后插入失败并显示错误"只有在使用列列表且IDENTITY_INSERT为ON时,才能指定表'#Tmp_MyTable'中标识列的显式值."
TSQL中是否有一种方法可以删除临时表中列的标识属性而不显式列出所有列?我特别想使用"SELECT*",以便在将新列添加到MyTable时代码将继续工作.
我相信删除和重新创建列将改变其位置,使得无法使用SELECT*.
更新:
我已尝试在一个响应中建议使用IDENTITY_INSERT.它不起作用 - 见下面的repro.我究竟做错了什么?
-- Create test table
CREATE TABLE [dbo].[TestTable](
[ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NULL,
CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
)
GO
-- Insert some data
INSERT INTO TestTable
(Name)
SELECT 'One'
UNION …Run Code Online (Sandbox Code Playgroud) 我已创建表,并希望更改该表.我想添加一个主键和identity(1,1).
我可以应用主键但应用标识会产生错误.有什么遗失?
ALTER TABLE MyTable ADD PRIMARY KEY (Id)
Run Code Online (Sandbox Code Playgroud)
如何使用主键添加标识?
我有一张表,里面有超过700万条记录.该表没有主键.我想添加一个新的标识列并将其设置为主键.我尝试使用SSMS添加列,然后将其设置为主键.我把这个新列称为Id.
这几乎可以工作,但我想将表的默认顺序更改为基于另一列,例如日期时间列按降序排列.这可能吗?也许我需要使用临时表和ROW_NUMBER()函数.
但是,我不是很擅长SQL.有人可以帮忙吗?
我还需要一个回滚脚本,以便我可以回到原始表.
我正在使用SQL Server 2008,我想要做的是:
update Daily set ReferenceNo = ReferenceNo + 100000
我不能这样做,因为这是字段如下: [ReferenceNo] [bigint] IDENTITY(1,1) NOT NULL,
如果我尝试更改删除自动增量并保存表以执行我需要执行的操作,我会收到以下错误:

有没有办法可以在不放弃桌子的情况下做到这一点?
----------------------------------------------
DepartmentCode varchar(30) AllowNulls
----------------------------------------------
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在SQL 2008中更改列的数据类型?这是我要改变的列,但是当我尝试这个查询时,
ALTER TABLE SystemDepartment ALTER COLUMN DepartmentCode smallint NOT NULL
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
消息5074,级别16,状态1,行1对象'PK_SystemDepartment'依赖于列'DepartmentCode'.消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN部门代码失败,因为一个或多个对象访问此列.
我的问题是如何强制我的查询来应对它?我也想将此列设置为主键和标识
我收到以下代码的错误
ALTER TABLE ADM_Roles ALTER COLUMN RoleID int IDENTITY (1, 1)
Run Code Online (Sandbox Code Playgroud)
关键字附近的语法不正确IDENTITY.
sql ×7
sql-server ×6
alter ×2
t-sql ×2
alter-table ×1
identity ×1
nullable ×1
primary-key ×1
ssms ×1