首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当add constraint with ONLINE = ON时,SQL Server中的“ALTER TABLE语句中option ONLINE的无效用法”

在SQL Server中,ALTER TABLE语句用于修改现有表的结构。其中,可以使用ADD CONSTRAINT子句来添加约束到表中。在添加约束时,可以使用OPTION ONLINE = ON选项来指定在线操作,即在添加约束的同时允许其他用户对表进行读写操作。

然而,需要注意的是,在SQL Server中,ALTER TABLE语句中的OPTION ONLINE选项只对某些特定类型的约束有效,而对其他类型的约束无效。具体来说,OPTION ONLINE = ON只对以下类型的约束有效:

  1. PRIMARY KEY约束:用于定义表中的主键。
  2. UNIQUE约束:用于确保表中的某一列或一组列的值是唯一的。
  3. FOREIGN KEY约束:用于定义表之间的关系,确保引用表中的外键值在主表中存在。
  4. CHECK约束:用于定义列或表级别的条件,确保满足特定的逻辑条件。

对于其他类型的约束,如DEFAULT约束、NULL约束、INDEX约束等,OPTION ONLINE = ON选项是无效的,即无法在添加这些约束时进行在线操作。

在实际应用中,使用OPTION ONLINE = ON选项可以避免在添加约束时对表进行长时间的锁定,从而减少对业务操作的影响。然而,需要注意的是,使用在线操作可能会导致一些性能上的损失,因此在选择是否使用OPTION ONLINE = ON时,需要根据具体情况进行权衡。

对于腾讯云的相关产品和产品介绍链接地址,可以参考以下内容:

  1. 腾讯云数据库SQL Server:提供了全托管的SQL Server数据库服务,支持高可用、弹性扩展等特性。详情请参考:https://cloud.tencent.com/product/cdb_sqlserver
  2. 腾讯云云服务器(CVM):提供了可弹性调整配置的云服务器实例,适用于各种应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  3. 腾讯云云数据库Redis:提供了高性能、可扩展的内存数据库服务,适用于缓存、会话存储等场景。详情请参考:https://cloud.tencent.com/product/redis
  4. 腾讯云对象存储(COS):提供了安全可靠、高扩展性的云存储服务,适用于存储和处理各种类型的数据。详情请参考:https://cloud.tencent.com/product/cos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 单表超 100000000 条记录的数据库结构变更,你能做到在线平滑变更吗?

    这样对于 DBA 来说是非常痛苦的,好在有 pt-online-schema-change 工具在没有 Online DDL 时解决了这一问题,pt-online-schema-change 其主要特点就是在数据库结构修改过程中不会造成读写阻塞...默认情况下会选择最优的索引,工具会在 SQL 语句中添加 FORCE INDEX 子句。...`employees` ' 当 --alter-foreign-keys-method=rebuild_constraints 时,做一个原子性的交换重命名表的操作,删除旧表的操作在删除触发器时一并操作...总结 当业务量较大时,修改操作会等待没有数据修改后,执行最后的 rename 操作。因此,在修改表结构时,应该尽量选择在业务相对空闲时,至少修改表上的数据操作较低时,执行较为妥当。...关于在对表进行 DDL 时使用 MySQL 原生的 Online DDL 特性还是使用 pt-online-schema-change 工具,通过以上对工具使用的说明与用法测试可以总结如下: 如果 MySQL

    3.4K20

    技术分享 | Online DDL 工具 pt-osc

    原表上要有 primary key 或 unique index,因为当执行该工具时会创建一个 DELETE 触发器来更新新表; 注意:一个例外的情况是 --alter 指定的子句中是在原表中的列上创建...--print:打印工具执行的 SQL 语句。 --statistics:打印统计信息。 --pause-file:当指定的文件存在时,终止执行。 --max-load:超过指定负载时,暂定执行。...当指定该选项时,则去掉建表语句中的 engine 选项,使用系统默认的存储引擎创建新表。 --defaults-file, -F 指定配置文件,需指定绝对路径。...--pause-file "string" 当此参数指定的文件存在时,将暂停执行 DDL。比如,当 DDL 影响业务时,可创建指定的文件,暂停 DDL。...当延迟超过 --max-lag 时,将暂停 data copy。

    4.7K31

    SQL Server 重新组织生成索引

    概述 无论何时对基础数据执行插入、更新或删除操作,SQL Server 数据库引擎都会自动维护索引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片)。...当索引包含的页中的逻辑排序(基于键值)与数据文件中的物理排序不匹配时,就存在碎片。...IGNORE_DUP_KEY 选项仅适用于创建或重新生成索引后发生的插入操作。当执行 CREATE INDEX、ALTER INDEX 或 UPDATE 时,该选项无效。默认值为 OFF。...系统目录中不存储 ONLINE、MAXDOP 和 SORT_IN_TEMPDB 的值。除非在索引语句中指定,否则,将使用选项的默认值。...在早期版本的 SQL Server 中,您有时可以重新生成非聚集索引来更正由硬件故障导致的不一致。

    2.7K80

    Mysql onlineddl vs gh-ost

    在online DDL中,也包含了copy跟inplace两种方式,对于不支持Online DDL的DDL SQL,则采用COPY方式; 对于支持Online DDL的DDL SQL,则采用Inplace...3 Online DDL涉及参数及选项 3.1 innodb_online_alter_log_max_size online ddl过程中发生DML时,会把数据修改情况记录到row-log中,而row-log...的大小,则由 innodb_online_alter_log_max_size设定,默认为128M,当表格较大且操作频繁时,做DDL过程,可调大该参数,避免出现1799错误: 3.2 Online DDL...VARCHAR按字符存储,每个字符按照字符集来计算字节,UTF8是3个字节一个字符,当VARCHAR的字节数时,只需要1个byte来存储实际长度,当VARCHAR字节数>=256时,则需要...column ItemId varchar(20); ALTER TABLE tbddl ADD su int; ALTER TABLE tbddl ADD xin varchar(40)

    82010

    Oracle基础维护02-表、主键、索引、表结构维护手册

    2.2.2普通表建立主建示例 alter table t_normal add constraint pk_t_normal_id primary key(id) using index tablespace...2.3.2分区表建立主建示例 alter table t_part add constraint pk_t_part_id primary key(start_time, id) using index...3.2.3重建/新建表的主建 普通表t_normal建立主建: alter table t_normal add constraint pk_t_normal_id primary key(id) using...index tablespace dbs_i_xxx; 分区表t_part建立主建: alter table t_part add constraint pk_t_part_id primary key...; 注:跟上面新建表时建立索引方法一样,只是这里多了online参数可选,加上online参数的意思是在线建立索引,可以避免创建索引过程中,影响到其他会话对此表的DML操作。

    54910

    MySQL adddrop字段时报主键冲突

    从官方文档中的描述所说 online ddl 期间,其他会话执行的dml操作造成唯一键冲突的sql会记录到 online log 中,在commit阶段等变更结束之后再应用这些sql会导致报错唯一键冲突...When running an online DDL operation, the thread that runs the ALTER TABLE statement applies an online...id=76895 https://bugs.launchpad.net/percona-server/+bug/1445589 关联知识 innodb_online_alter_log_max_size...该参数限定了online ddl操作时使用的临时日志文件的最大大小。在创建索引或者对表进行alter操作时,该日志文件存储了DDL操作期间对表的 insert,update,delete的数据记录。...临时日志文件每次以 innodb_sort_buffer_size 为单位进行扩展直至达到 innodb_online_alter_log_max_size设置的最大值。

    4.8K21

    ORACLE分区表转换之在线重定义(DBMS_REDEFINITION)

    add constraint U_1_PAR unique (S_NAME) using index tablespace PARTITION; --创建check约束 alter table STUDENT_PAR...如果映射方法没有提供,则认为所有包括在中间表中的列用于表的重定义。如果给出了映射方法,则只考虑映射方法中给出的列。如果没有给出重定义方法,则默认使用主键方式。...DML操作,那么可以选择执行一次或多次的SYNC_INTERIM_TABLE()过程,此操作可以减少最后一步执行FINISH_REDEF_TABLE()过程时的锁定时间。...ALTER TABLE STUDENT_PAR RENAME CONSTRAINT U_1 TO U_1_20210411; ALTER TABLE STUDENT_PAR RENAME CONSTRAINT...U_1_20210411; --rename 新分区表的约束和索引 ALTER TABLE STUDENT RENAME CONSTRAINT U_1_PAR TO U_1; ALTER TABLE

    1.9K30

    pt-online-schema-change在线修改表结构

    首先,osc创建与原始表相同的不包含数据的新表并按照需求进行表结构的修改,然后将原始表中的数据按chunk大小逐步拷贝到新表中,当拷贝完成后,会自动同时修改原始表和新表的名字并默认将原始表删除。...--alter-foreign-keys-method 外键改表前后必须持续的链接正确的表,当该工具rename原始表并用新表来取代原始表时,外键必须正确更新到新表上,并且原始表中的外键不再生效...table来drop并re-add链接新表的外键。...另外,因为在MySQL中alter table比外部拷贝数据的速率快很多,所以拷贝速率是按照--chunk-size-limit来决定的 因为MySQL的限制,外键在改表前后的名字会不一样,改表后新表中的外键名前会加一个下划线...删除外键(drop foreign key constrain_name)时,需要指定名称_constraint_name,而不是原始的constraint_name。

    1.4K30

    Oracle 学习笔记

    设计数据库时,要决定它包括哪些表,每个表中包含哪些列,每列的数据类型等。 在表中创建列时,必须为其指定数据类型,列的数据类型决定了数据的取值、范围和存储格式。...表管理 主要为对列及其属性的修改 增加列 ALTER TABLE XS ADD ( JXJ NUMBER(1), DJSM VARCHAR2(40) DEFAULT '奖金1000元' ); 修改列...即两个不同的SESSION所插入的数据是互不相干的。当某一个SESSION退出之后临时表中的数据就被截断(truncate table,即数据清空)了。...,而且事务级临时表则不管是commit、rollback或者是会话结束,临时表中的数据都将被截断 约束 主键约束,外键约束,特殊约束等 手机号约束 ALTER TABLE EMPLOYEES ADD (...当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些Oracle视图可以修改对应的基表,有些则不能(仅仅能查询)。

    1.3K50
    领券