匿名用户oracle加列+default DDL是否会有锁?
alter table table_name add col_a number(10) dafault 1 not null;
oracle,上述加列 有default的SQL,大表执行,会有行锁吗?会影响其他生产DML么?
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
4条回答
默认
最新
采纳答案后不可修改和取消
这个问题上次好像有人问过,而且还有了争议
https://www.modb.pro/issue/11242
不过我有做实验,结论是dml事务会引起加字段事务被阻塞,但反过来却不会,而且默认值如果是表达式的话,在某些场景下可能会和你想要的不一样
评论
有用 0不会锁,default值会记录在数据字典中!!
评论
有用 0看这个问题争论很大~~~~ 4000W的表测试(12C)
SQL> desc creditinfo_part;
Name Null? Type
--------------------------------------------- -------- ----------------------------------------------------------------------------
CI_EMAIL NOT NULL NVARCHAR2(100)
CI_TEL NVARCHAR2(50)
CI_FIRSTNAME NVARCHAR2(50)
CI_LASTNAME NVARCHAR2(50)
CI_COUNTRY NVARCHAR2(100)
USERID NOT NULL NUMBER
SQL> select count(*) from creditinfo_part;
COUNT(*)
----------
43343240
Elapsed: 00:00:01.32
SQL> alter table creditinfo_part add col1 number default 1 not null;
Table altered.
Elapsed: 00:00:00.04
SQL> alter table creditinfo_part add col2 number default 1;
Table altered.
Elapsed: 00:00:00.02
SQL> alter table creditinfo_part add col3 number;
Table altered.
Elapsed: 00:00:00.01
加不加defaul,not null都是毫秒级
评论
有用 0回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

