精华内容
下载资源
问答
  • sqlserver修改表结构
    千次阅读
    2021-01-22 11:22:08

    因为我们公司所有对数据库的修改都要保留脚本,所以就不能直接手动改了

    脚本

    1.字段

    1.1新增

    单个新增

    alter table productInfo add productStatus VARCHAR(2) NULL 
    

    批量新增

    ALTER TABLE prodSubsysInfo ADD collocation VARCHAR ( 4 ) NULL,
    releaseType VARCHAR ( 4 ) NULL,
    offerType VARCHAR ( 4 ) NULL,
    publicAttribute VARCHAR ( 4 ) NULL,
    releaseVersion VARCHAR ( 4 ) NULL,
    prodSubsysManager VARCHAR ( 4 ) NULL,
    prodSubsysStatus VARCHAR ( 4 ) NULL
    

    1.2 修改

    exec sp_rename '[prodSubsysInfo].[ModuleIdParent]','subSysIdParent'
    

    2.表

    IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[AppSystemInfo]') AND type IN ('U'))
    	DROP TABLE [dbo].[AppSystemInfo]
    GO
    
    CREATE TABLE [dbo].[AppSystemInfo] (
      [systemId] varchar(20) COLLATE Chinese_PRC_CI_AS  NOT NULL,
      [systemName] varchar(20) COLLATE Chinese_PRC_CI_AS  NULL,
      [systemManager] varchar(20) COLLATE Chinese_PRC_CI_AS  NULL,
      [systemStatus] varchar(2) COLLATE Chinese_PRC_CI_AS  NULL,
      [directions] varchar(500) COLLATE Chinese_PRC_CI_AS  NULL
    )
    GO
    
    ALTER TABLE [dbo].[AppSystemInfo] SET (LOCK_ESCALATION = TABLE)
    GO
    
    更多相关内容
  • 修改表结构时,sql server会弹出对话框,显示以下内容: 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。 分析这句话,...

    解决方案

    当修改表结构时,sql server会弹出对话框,显示以下内容:

    不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。

    分析这句话,

    1、我们修改了表结构,这个更改需要删除这个表并且重新创建,当然这个过程是由系统自动完成的。

    2、无法保存原因一:该表无法重新创建。

    3、无法保存原因二:启用了“阻止保存要求重新创建表的更改”选项。

    可以通过设置解决的,我们先尝试更改设置。

    原因二解决方案:菜单栏->工具->选项->设计器->表设计器和数据库设计器,右侧面板,取消勾选“阻止保存要求重新创建表的更改”。
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • SQL Server 修改表结构

    万次阅读 2018-08-16 16:33:58
    查看指定表结构 exec sp_help Reports 修改表名 exec sp_rename 'Reports','Reports2' 删除数据表 不能删除有外键约束的表。 drop table Reports 表字段 alter table Reports add NewColumn ...

    查看指定表结构

    exec sp_help Reports

    修改表名

    exec sp_rename 'Reports','Reports2'

    删除数据表

    不能删除有外键约束的表。

    drop table Reports

    表字段

    alter table Reports add NewColumn nchar(5) null --新增字段
    alter table Reports alter column NewColumn nvarchar(10) --修改字段属性
    exec sp_rename 'Reports.NewColumn','OldColumn'--修改字段名
    alter table Reports drop column NewColumn --删除列

    字段约束

    alter table Reports add constraint Name_UQ unique(Name) --新增唯一约束(此非索引)
    alter table Reports drop constraint Name_UQ --删除此约束

    字段索引

    MSSQL默认主键是聚集索引。一个表只能有一个聚集索引(Clustered Index)。

    create index NameIndex on Reports(Name) --新增普通索引(非聚集索引)
    create unique index Name_UQ  on Reports(Name) --新增唯一索引(非聚集索引)
    
    exec sp_helpindex Reports --查看表的索引
    drop index Reports.NameIndex --删除索引
    
    create nonclustered index NameFileIndex on Categories(CategoryName,PictureFile) --创建非聚集索引(组合索引)
    展开全文
  • 在使用一些表管理工具,或对数据库的物理表结构进行改动时,可以通过数据库的语法脚本实现。 1.创建表 CREATE TABLE dbo.表名 ( 列名1 [列名数据类型](数据长度) 是否为Null, 列名2 [列名数据类型](数据长度)...

    在使用一些表管理工具,或对数据库的物理表结构进行改动时,可以通过数据库的语法脚本实现。

    1.创建表

    CREATE TABLE dbo.表名
    	(
    	 列名1 [列名数据类型](数据长度) 是否为Null,
         列名2 [列名数据类型](数据长度) 是否为Null(Null/Not Null),
    	)  ON [PRIMARY]
    ALTER TABLE dbo.表名 ADD CONSTRAINT
    	PK_表名 PRIMARY KEY CLUSTERED 
    	(
    	 主键列名  --若是联合主键 则为 列名1,列名2
    	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
        ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

    示例:

    创建一个表名为 Table_1的 表,指定mainkey列为自增主键 且从10000 开始,步长为1递增

    CREATE TABLE dbo.Table_1
    	(
    	mainkey int NOT NULL IDENTITY (10000, 1),
    	a char(1) NULL,
    	b nvarchar(50) NULL,
    	c ntext NULL
    	)  ON [PRIMARY]
    	 TEXTIMAGE_ON [PRIMARY]
    	ALTER TABLE dbo.Table_1 ADD CONSTRAINT
    	PK_Table_1 PRIMARY KEY CLUSTERED 
    	(
    	mainkey 
    	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

    2.设置表结构里列字段说明

    为表的某一列 添加说明 

    EXECUTE sp_addextendedproperty N'MS_Description', N'列的说明信息', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'COLUMN', N'列名'

    注意:添加说明sp_addextendedproperty 更新说明sp_updateextendedproperty 删除说明是 sp_dropextendedproperty

    示例:

    为刚才的Table_1表 的 b列 添加 ‘b列说明’ ,以及 c列 添加 ‘c列说明’

    EXECUTE sp_addextendedproperty N'MS_Description', N'b列的说明', N'SCHEMA', N'dbo', N'TABLE', N'Table_1', N'COLUMN', N'b'
    EXECUTE sp_addextendedproperty N'MS_Description', N'c列的说明', N'SCHEMA', N'dbo', N'TABLE', N'Table_1', N'COLUMN', N'c'

    想确保不报异常,可以采用如下方式 进行设置 列字段说明

    IF EXISTS (SELECT 1 FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表名', 'column',default) where objname='列名')
    EXECUTE sp_updateextendedproperty N'MS_Description', N'列的说明', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'COLUMN', N'列名'
    ELSE
    EXECUTE sp_addextendedproperty N'MS_Description', N'列的说明', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'COLUMN', N'列名'

     

    3.设置表的列字段的 默认值

    IF EXISTS (select * from sysobjects where name='DF_表名_列名')
    ALTER TABLE dbo.表名 DROP CONSTRAINT DF_表名_列名
    ALTER TABLE dbo.表名 ADD CONSTRAINT DF_表名_列名 DEFAULT N'默认值' FOR 列名

    这里是先采用 drop 将列名的约束值信息丢掉,然后再添加进去,确保不报异常

    若是想要读取某个表的默认值 就用

    select TM.name, text defaultValue 
    from sysobjects TM
    left join syscomments TB
    on TM.id = TB.id
    where name like '%表名%'
    and xtype = 'D' --xtype D标识默认值  PK 标识是 主键

    4.添加一列

    IF NOT EXISTS ( SELECT TOP 1 1
                    FROM    INFORMATION_SCHEMA.COLUMNS
                    WHERE   [TABLE_NAME] = '表名'
                            AND [COLUMN_NAME] = '新字段名')
    BEGIN
        ALTER TABLE dbo.表名 ADD 列名 数据类型(长度) 是否为NULL
    END

    示例:Table_1里加了个 "newField"列

    IF NOT EXISTS ( SELECT TOP 1 1
                    FROM    INFORMATION_SCHEMA.COLUMNS
                    WHERE   [TABLE_NAME] = 'Table_1'
                            AND [COLUMN_NAME] = 'newField')
    BEGIN
        ALTER TABLE dbo.Table_1 ADD newField nchar(10) NULL
    END
    --或采用下面这种 但是不太靠谱
    IF NOT EXISTS (select 1 from sysobjects where name='DF_Table_1_newField ')
    ALTER TABLE dbo.Table_1 ADD newField nchar(10) NULL

    5.更改列名

    EXECUTE sp_rename N'dbo.表名.旧列名', N'Tmp_新列名', 'COLUMN' 
    EXECUTE sp_rename N'dbo.表名.Tmp_新列名', N'新列名', 'COLUMN' 

    示例:将 Table_1 的 b列 更名为 newB

    EXECUTE sp_rename N'dbo.Table_1.b', N'Tmp_newB', 'COLUMN' 
    EXECUTE sp_rename N'dbo.Table_1.Tmp_newB', N'newB', 'COLUMN' 

    6.删除列

    先去删除约束 再去删除列,描述字段 删除列时 自动删除了

    IF EXISTS (select 1 from sysobjects where name='DF_表名_列名')
    ALTER TABLE dbo.表名 DROP CONSTRAINT DF_表名_列名
    ALTER TABLE dbo.表名 DROP COLUMN 列名

    7.更改表结构

    例如 :变更字段的数据类型、变更字段的 是否为Null, 变更表结构的主键构成,这些都属于变更表结构,此时需要先建一张临时表,把数据全部拷走,再重新建表把数据拷贝回来,并把数据改为对应的。

    主要先创建一个 Tmp_表名 的临时表,然后 通过 CONVERT 函数 进行数据转换 CONVERT(新列对应的数据类型(长度), 旧列名)

    然后通过 sp_rename Tmp_表名 更名为 原本的表名。

    利用事件回滚机制 防止出现错误
     

    BEGIN TRANSACTION 
    
    执行体
    
    COMMIT

    注意:这里的主键声明 要放到 表重命名后,用 更名后的表建立约束。 

    BEGIN TRANSACTION
    CREATE TABLE dbo.Tmp_表名
    	(
    	表列配置项
    	)  ON [PRIMARY]
    IF EXISTS(SELECT * FROM dbo.表名)
    	 EXEC('INSERT INTO dbo.Tmp_表名 (新列名1, 新列名2, 新列名3)
    		SELECT 旧列名1, CONVERT(新列名2的数据类型, 旧列名2), 旧列名3 FROM dbo.表名 WITH (HOLDLOCK TABLOCKX)')
    DROP TABLE dbo.表名
    EXECUTE sp_rename N'dbo.Tmp_表名', N'表名', 'OBJECT' 
    ALTER TABLE dbo.表名 ADD CONSTRAINT
    	PK_表名 PRIMARY KEY CLUSTERED 
    	(
    	主键列
    	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    COMMIT

    示例:

    将Table_1的

    b列 更新列名为 newB  并更新数据类型为 ntext → nvarchar(100)

    c列 仅更新列名 c newCName

    BEGIN TRANSACTION
    CREATE TABLE dbo.Tmp_Table_1
    	(
    	mainkey int NOT NULL IDENTITY (1, 1),
    	newB nvarchar(100) NULL,
    	newCName nchar(10) NULL
    	)  ON [PRIMARY]
    IF EXISTS(SELECT * FROM dbo.Table_1)
    	 EXEC('INSERT INTO dbo.Tmp_Table_1 (mainkey , newB, newCName )
    		SELECT mainkey , CONVERT(nvarchar(100), b), c FROM dbo.Table_1 WITH (HOLDLOCK TABLOCKX)')
    DROP TABLE dbo.Table_1
    EXECUTE sp_rename N'dbo.Tmp_Table_1', N'Table_1', 'OBJECT' 
    ALTER TABLE dbo.Table_1 ADD CONSTRAINT
    	PK_Table_1 PRIMARY KEY CLUSTERED 
    	(
    	mainkey 
    	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    COMMIT

    ps:若表结构里还有默认值,列说明,相关语句请参照各对应SQL添加到 Commit之前即可

    8.其他

    对于sql server 的其他语句,可以通过 生成脚本来查看

     

    附:

    sql语句读取一个表的相关配置项

    SELECT  
            a.colorder as colOrder, 
            d.name as tableName,
            a.name as FieldName, 
            convert(int,case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then 1 else 0 end) as isIndex, 
            convert(int,case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in ( 
                                             SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then 1 else 0 end) as isPk, 
            b.name as sqlTypeName, 
            a.length as 'length', 
            convert(int,COLUMNPROPERTY(a.id,a.name,'PRECISION')) as 'size', 
            convert(int,isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0)) as 'scale', 
            convert(int,case when a.isnullable=1 then 1 else 0 end) as 'Nullable', 
            convert(varchar(100), isnull(e.text,'')) as defaultVal, 
            convert(varchar(255), isnull(g.[value],'')) as remarks 
     FROM  
            syscolumns a 
     left join  
            systypes b  
     on  
            a.xusertype=b.xusertype 
     inner join  
            sysobjects d  
     on  
            a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties' 
     left join  
            syscomments e  
     on  
            a.cdefault=e.id 
     left join  
     sys.extended_properties   g  
     on  
            a.id=G.major_id and a.colid=g.minor_id   
     left join 
     sys.extended_properties f 
     on  
            d.id=f.major_id and f.minor_id=0 
     where  d.name='表名'
    order by  
            a.id,a.colorder

     

    展开全文
  • 如果我们需要修改sql server表结构,应该怎么做呢?接下来将为您介绍修改sql server表结构的方法,需要的朋友可以参考下
  • 1. SQL Server修改表结构 1.1 添加字段 1.2删除字段 1.3 删除字段约束或键 1.4修改字段类型 1.5修改字段名 1.6修改表名 2. 表和字段注释说明 2.1 添加表注释说明 2.2 修改表注释说明 2.3 删除表注释说明 ...
  • SQLServer修改表结构无法保存的问题

    千次阅读 2018-03-01 09:39:48
    装了SqlServer2008很久了,今天是第一次使用,结果在修改一张结构保存时,提示您对无法重新创建的标进行了更改或者启用了阻止保存要求重新创建的更改选项。 试了几次一直是这个错误,删除后重建,然后还是...
  • 使用SQL语句修改表结构SQL Server

    千次阅读 2021-10-05 14:32:00
    使用SQL语句修改表结构SQL Server) ALTER TABLE的语法格式如下: 上述格式主要参数说明如下: database_name:要在其中创建表的数据库的名称。 schema_name:表所属架构的名称。 table_name:要更改的表名称。 ...
  • SQL Server 2008修改表结构后无法保存的问题
  • 本教程给大家介绍修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库,涉及到sqlserver数据库命令的相关知识,对sqlserver数据库命令感兴趣的朋友可以参考下本
  • 修改表结构是个危险操作,默认情况下,当你修改表结构时,会弹出如下提示框 上图是修改DeUser表中列的数据类型(从varchar修改为int),然后保存时弹出的提示框。如果我们不想重新创建这张表,只是想在原有的基础...
  • SQL server不能修改表结构的解决办法

    千次阅读 2021-11-22 17:58:05
    之前在想给新加一列的时候出现了这个错误提示:不允许保存更改。您所做的更改要求删除并重新创建以下。您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建的更改”选项。 解决: 工具->选项-...
  • sql server 修改表结构

    千次阅读 2014-06-06 22:50:18
    SQL脚本修改表结构 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1] nVarChar(50) default '默认值' null , [字段2] ntext null , [字段3] datetime, [字段4] ...
  • 摘要:C#源码,数据库应用,表结构 C#连接SQLServer修改数据表结构,利用创建的数据库连接,修改表的结构,程序运行截图如上所示,有兴趣的C# Fans们就下载吧 。
  • SQL Server修改表结构,添加约束

    千次阅读 2020-03-04 13:05:17
    文章目录修改表结构修改字段数据类型添加字段删除字段修改字段特征(约束)添加标识列约束(IDENTITY)添加主键约束(PRIMARY KEY)添加唯一约束(UNIQUE)添加默认约束(DEFAULT)添加检查约束(CHECK )添加非空约束(NOT NULL)...
  • 保存的对于我来说简直是没用的信息,只是记录了事务的发生时间和一些相关信息,结果这样操作了数据库的结构还是没能修改并保存,而是继续弹出上面的那个窗口,这下我就郁闷了。 点击“取消”却弹出 同样也是没有...
  • 在很多应用程序开发中,需要记录某些数据表的历史记录或修改痕迹,以便日后出现数据错误时进行数据排查。...这两个表的结构总是与被该触发器作用的表结构相同。触发器执行完成后,与该触发器相关的两
  • 这是一个基于MSSQLSERVER使用动态SQL实现修改表结构的案例,欢迎各位数据库爱好者借鉴或使用
  • 我们在使用SqlServer时经常遇到这种情况,当修改某个结构后,相关的视图就不对了而导致程序错误,因此就有个下面这个存储过程。  CREATE PROCEDURE RefreshAllView AS DECLARE MyCursor CURSOR FOR select...
  • 1 使用图形方式创建表 2 使用命令方式创建表 3 修改表结构 4 删除表 5 表的索引
  • 运行环境:.net4.5,原创工具 导出后无需修改sql即可执行导入。 SqlServer转Oracle工具 支持表结构、主键及表数据导出
  • 同时支持sqlserver,oracle,MySql ,代码差异高亮显示 具体功能 介绍博客有图片 :https://blog.csdn.net/wwja_chen/article/details/89336728 如开发库和正式库之间的结构和数据同步,此工具可以告诉您哪个表结构有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 214,449
精华内容 85,779
关键字:

sqlserver修改表结构