Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 一个新表意外地没有调整大小以包含由UPDATE/SET/FROM发送的行数_Sql Server_Sql Update_Create Table - Fatal编程技术网

Sql server 一个新表意外地没有调整大小以包含由UPDATE/SET/FROM发送的行数

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

免责声明-这里是非常新手的SQL程序员;没有正式背景。我想我缺少了一些非常基本的东西——需要帮助才能弄清楚为什么我创建的表不能自动调整大小(行长度),以便能够容纳我试图使用UPDATE命令发送的所有数据

背景-我在SSMS中创建了一个新的数据库“HelperTables”(所有设置都是默认设置)。然后我用向导创建了一个新表。该表的脚本如下所示:

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语句将始终更新零行。必须先插入行,然后才能更新行。