Sql server 一个新表意外地没有调整大小以包含由UPDATE/SET/FROM发送的行数
免责声明-这里是非常新手的SQL程序员;没有正式背景。我想我缺少了一些非常基本的东西——需要帮助才能弄清楚为什么我创建的表不能自动调整大小(行长度),以便能够容纳我试图使用UPDATE命令发送的所有数据 背景-我在SSMS中创建了一个新的数据库“HelperTables”(所有设置都是默认设置)。然后我用向导创建了一个新表。该表的脚本如下所示:Sql server 一个新表意外地没有调整大小以包含由UPDATE/SET/FROM发送的行数,sql-server,sql-update,create-table,Sql Server,Sql Update,Create Table,免责声明-这里是非常新手的SQL程序员;没有正式背景。我想我缺少了一些非常基本的东西——需要帮助才能弄清楚为什么我创建的表不能自动调整大小(行长度),以便能够容纳我试图使用UPDATE命令发送的所有数据 背景-我在SSMS中创建了一个新的数据库“HelperTables”(所有设置都是默认设置)。然后我用向导创建了一个新表。该表的脚本如下所示: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Col
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CollectionStatus_RecipientGroup]
(
[RecipientGroup] [VARCHAR](255) NULL,
[CollectionStatus] [VARCHAR](255) NOT NULL,
CONSTRAINT [PK_CollectionStatus_RecipientGroup]
PRIMARY KEY CLUSTERED ([CollectionStatus] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
UPDATE [HelperTables].[dbo].[CollectionStatus_RecipientGroup]
SET [RecipientGroup] = tableupdate.RecipientGroup,
[CollectionStatus] = tableupdate.CollectionStatus
FROM
(SELECT *
FROM
(SELECT /* query trimmed for brevity - I confirmed it works perfectly by itself*/
) results
) tableupdate
我现在正试图运行一个UPDATE/SET/FROM
查询,用一个选择更新这个表
代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CollectionStatus_RecipientGroup]
(
[RecipientGroup] [VARCHAR](255) NULL,
[CollectionStatus] [VARCHAR](255) NOT NULL,
CONSTRAINT [PK_CollectionStatus_RecipientGroup]
PRIMARY KEY CLUSTERED ([CollectionStatus] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
UPDATE [HelperTables].[dbo].[CollectionStatus_RecipientGroup]
SET [RecipientGroup] = tableupdate.RecipientGroup,
[CollectionStatus] = tableupdate.CollectionStatus
FROM
(SELECT *
FROM
(SELECT /* query trimmed for brevity - I confirmed it works perfectly by itself*/
) results
) tableupdate
在以前的SQL Server上,这一点非常有效。但是,在我进入“编辑顶部XXX行”向导并添加一些虚拟数据之前,它一直导致(受影响的0行)return命令(无错误)。当我重新运行查询时,结果是(受影响的4行),其中4是我添加的虚拟数据行数。查询发送的数据并不代表结果集的前四行
因此,我的结论是,我的代码很好,但表的设置或SSMS中的某些固有设置(可能是权限?)有问题
我遗漏了什么?谢谢你的反馈,即使是那些刺耳的地方。确认INSERT INTO解决了这个问题——我还将DROP TABLE和CREATE TABLE子句添加到同一个查询中(显然是在前面)。这可能不是最有效的方法,但似乎效果不错。如果有比我更喜欢的学习方式 块引号用于引用,而不是代码。代码块是用来编写代码的。你真的要我们调试一条你没有提供的语句吗。。。?我们无法告诉您为什么查询不工作,而我们所拥有的只是“为简洁起见对查询进行了修剪-我确认它本身可以完美地工作”。如果您创建了表但没有插入行,update语句将始终更新零行。必须先插入行,然后才能更新行。