怎么创建一个表如何设置字段为主键主键以及表字段

查看: 2792|回复: 3
添加主键和添加字段两个操作是否会锁表?
论坛徽章:7
一直对添加主键和添加字段两个操作是否会锁表没有实际的证据,所以做了10046事件,
create table t1 as select * from dba_objects where object_
SQL& alter session set events '10046 trace name context forever, level 12';
SQL& alter table t1 add primary key(object_id);
SQL& alter session set events '10046 trace name context off';
SQL& alter session set events '10046 trace name context forever, level 12';
SQL& alter table t1 add id number(2);
SQL& alter session set events '10046 trace name context off';
但是从产生的trace文件看,除了添加主键时会有创建唯一索引的隐含语句外,其他的只有像插入、更新一些数据字典表,例如IDL_UB1$、SEG$、CON$等的记录,这些能说明添加主键和添加字段对锁表没有太多的影响么?
如果是11g环境,增加主键的trace可以看到:
LOCK TABLE &T1& IN SHARE MODE&&NOWAIT
说明对T1表有一个共享模式锁,并且NOWAIT,说明正在更新的行,若有其他session做处理就会直接返回报错,不等待。
增加字段的trace可以看到:
LOCK TABLE &T1& IN ROW EXCLUSIVE MODE&&NOWAIT
说明排他模式的锁,其他session不能对表进行任何操作。
以上对于10g和11g,添加主键和添加字段,对锁表的影响,理解正确么?请高手指点,谢谢!
论坛徽章:47
It's good to know 11g explicitly locks the table. In 10g, try event 10704 (Print out information about what enqueues are being obtained).
Your interpretation of the 11g LOCK statements is missing one bit: whether it's table or row. &Row exclusive& is actually one level lower than &share& mode. Saying &其他session不能对表进行任何操作& for &row exclusive& mode is not right.
论坛徽章:7
Yong Huang 发表于
It's good to know 11g explicitly locks the table. In 10g, try event 10704 (Print out information abo ...
谢谢您的回复。
我打印了10704的事件,但看的不是很明白,不清楚哪里说明了问题呢?
10704的trace:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /opt/app/ora10g/product/10.2.0
System name:& & & & Linux
Node name:& & & & vm-vmw4131-t
Release:& & & & 2.6.32-279.el6.x86_64
Version:& & & & #1 SMP Wed Jun 13 18:24:36 EDT 2012
Machine:& & & & x86_64
Instance name: petest
Redo thread mounted by this instance: 1
Oracle process number: 20
Unix process pid: 2936, image: oracle@vm-vmw4131-t (TNS V1-V3)
*** ACTION NAME)
15:22:27.395
*** MODULE NAMESQL*Plus)
15:22:27.395
*** SERVICE NAMESYS$USERS)
15:22:27.395
*** SESSION ID463.6-06-30 15:22:27.395
15:22:27.395
ksqgtl *** TM-00000 mode=6 flags=0x401 timeout=0 ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.395
ksucti: init both txn DID and session DID from new DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.395
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.396
ksqgtl *** TM-00000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.396
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.396
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.396
ksqgtl *** TM-000000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.396
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.396
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.397
ksqgtl *** TM-000000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.397
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.397
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.397
ksqgtl *** TM-000000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.397
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.397
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.397
ksqgtl *** TM-000000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.397
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.397
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.398
ksqgtl *** TX-000a2 mode=6 flags=0x401 timeout=0 ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.398
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.398
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.399
ksqgtl *** TM-00000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.399
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.399
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.400
ksqgtl *** TM-- mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.400
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.400
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.400
ksqgtl *** TM-00000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.400
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.400
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.401
ksqgtl *** TM-00000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.401
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.401
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.403
ksqgtl *** TM-00000 mode=3 flags=0x401 timeout= ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.403
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.403
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.403
ksqgtl *** MR-00002 mode=4 flags=0x10 timeout=0 ***
ksqgtl: xcb=0xa2c28d98, ktcdix=, topxcb=0xa2c28d98
& & & & ktcipt(topxcb)=0x0
15:22:27.403
ksucti: init session DID from txn DID: 056EAE
& & & & ksqlkdid: 056EAE
15:22:27.403
*** ksudidTrace: ksqgtl
& & & & ktcmydid(): 056EAE
& & & & ksusesdi:& &000000
& & & & ksusetxn:& &056EAE
ksqgtl: RETURNS 0
15:22:27.403
ksqrcl: MR,2,2
ksqrcl: returns 0
15:22:27.404
ksqrcl: TX,a
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,12,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,15,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,4,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,2c5,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,41,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,4f,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,4c,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,4b,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,4a,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,49,0
ksqrcl: returns 0
15:22:27.404
ksqrcl: TM,13e56,0
ksqrcl: returns 0
论坛徽章:47
See if msg #2 of
helps you interpret the trace.
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
[第四章表的创建与使用.doc 16页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
[第四章表的创建与使用
你可能关注的文档:
··········
··········
表的创建与使用
1.创建新表时,(
)来创建表的结构.
A.直接输入数据
B.使用表设计器
C.通过获取外部数据(导入表、链接表等)
D.使用向导
2.下列关于插入字段的说法中,错误的是(
A.插入字段就是在表的原有的某个字段前插入字段
B.插入字段需要打开表的设计视图
C.插入字段时,每次只能插入一行
D.插入字段时,一次可以插入多行
3.建立表的结构时,一个字段由(
A.字段名称
B.数据类型
C.字段属性
D.以上都是
4.Access表的字段类型中不包括(
5.如果一张数据表中含有照片,那么“照片”所在字段的数据类型通常为(
A.OLE对象型
B.超级链接型
C.查阅向导型
6.Access中,一个表最多可以建立(
)个主键(主索引).
7.在Access表中,(
)不可以定义为主键.
A.自动编号
8.关于主关键字,说法错误的是(
A.Access并不要求在每一个表中都必须包含一个主关键字
B.在一个表中只能指定一个字段成为主关键字
C.在输入数据表或对数据进行修改时,不能向主关键字的字段输入相同的值
D.利用主关键字可以对记录快速地进行排序和查找
9.一个书店的店主想将Book表中的书名设为主键,但存在相同书名不同作者的情况.为满足店主的需求,可(
A.定义自动编号主键
B.将书名和作者组合定义多字段主键
C.不定义主键
D.再增加一个内容无重复的字段定义为主键
10.关于索引,叙述错误的是(
A.索引越多越好
B.一个索引可以由一个或多个字段组成
C.可提高查询效率
D.主索引值不能为空,不能重复
11.Access数据库中,表间的关系包括(
A.一对一、一对多、多对一
B.一对一、多对多
C.一对一、一对多、多对多
D.一对多、多对多
12.关于表间关系,叙述错误的是(
A.关系双方联系的对应字段的字段类型相同
B.关系双方至少需要有一方为主索引
C.关系的来源和目的都是字段
D.Access中,在两个表之间可以直接建立多对多关系
13.在关系窗口中,在一对多关系连线上标记1对∞字样,表示在建立关系时启动了(
A.实施参照完整性
B.级联更新相关记录
C.级联删除相关记录
D.以上都不是
14.若要在一对多关系中,更改一方的原始记录后,另一方立即更改,应启动(
A.实施参照完整性
B.级联更新相关记录
C.级联删除相关记录
D.以上都不是
15.在关系窗口中,选定某个表,按Del键,将会(
A.在关系窗口中删除该选定的表,但不删除关系
B.在关系窗口中删除该选定的表,同时删除与该选定的表相关的所有关系
C.在数据库中删除该选定的表,同时删除与该选定的表相关的关系
D.在关系窗口中删除“产品”表,同时删除所有关系
16.在数据表视图中,每个记录左侧的小方框是(
A.导航按纽
B.显示当前记录号
C.显示记录数
D.记录选定器
…………..
18.选定表中所有记录的方法是(
A.选定第一个记录
B.选定最后一个记录
C.任意选定一个记录
D.选定第一个记录,按住Shift键,选定最后一个记录
19.下列创建表的方法中,不正确的是(
A.使用“数据表”视图建立表
B.使用“页视图”创建表
C.使用“设计”视图建立表
D.使用“表向导”创建表
20.关于编辑记录的操作,说法正确的是(
A.可以同时选定不
正在加载中,请稍后...无安全问题
我爸爸的出生地
我妈妈的出生地
我的小学校名
我的中学校名
我最喜欢的运动
我最喜欢的歌曲
我最喜欢的电影
我最喜欢的颜色
自定义问题
还没有帐号? 赶紧
用户版块帖子
MySQL支持库创建表怎么设置ID为主键
UID:396883
铜币86威望0E积分0技术积分0
.版本 2.支持库 mysql.程序集 窗口程序集1.程序集变量 mysql句柄, 整数型.子程序 _按钮1_被单击mysql句柄 = 连接MySql (“127.0.0.1”, “root”, “root”, “testmysql”, 3306)标题 = “数据库连接成功”.如果真 (mysql句柄 = 0)&&&&标题 = “数据库连接失败”&&&&信息框 (取错误文本 (mysql句柄, 错误), 0, )&&&&返回 ().如果真结束标题 = “数据库连接成功”.子程序 __启动窗口_将被销毁断开MySql (mysql句柄)关闭MySql (mysql句柄).子程序 _按钮2_被单击.局部变量 字段表, 字段信息类型, , &4&.局部变量 A, 逻辑型字段表 [1].类型 = #字段附加类型字段表 [1].附加类型信息 = #增加主键字段表 [1].主键 = “ID”字段表 [1].索引 = “ID”字段表 [2].类型 = #字段基本类型字段表 [2].字段名 = “ID”字段表 [2].字段类型 = #MYSQL长整型字段表 [2].自增量标记 = 真' 字段表 [1].附加内容 =字段表 [3].类型 = #字段基本类型字段表 [3].字段名 = “name”字段表 [3].字段类型 = #MYSQL文本型字段表 [3].附加类型信息 = #最大长度字段表 [3].附加内容 = “20”字段表 [4].类型 = #字段基本类型字段表 [4].字段名 = “pass”字段表 [4].字段类型 = #MYSQL文本型字段表 [4].附加类型信息 = #最大长度字段表 [4].附加内容 = “20”A = 创建表 (mysql句柄, “data”, 字段表).如果真 (A = 真)&&&&信息框 (“创建成功”, 0, )&&&&返回 ().如果真结束信息框 (“失败”, 0, )不知道这样写是否正确。怎么设置ID自动为主键并自动增长。
访问内容超出本站范围,不能确定是否安全
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
您目前还是游客,请
&回复后跳转到最后一页
Time now is:02-13 11:02, Gzip enabled
Powered by
CorporationSql修改表的主键字段类型以及主键名称从新设置主键 - 为程序员服务
为程序员服务
Sql修改表的主键字段类型以及主键名称从新设置主键
/*==============================================================================
* Filename: DropKeyAddKey.sql
* Description:当想要修改表的主键字段的属性是,需要先删除主键然后再重建。默认表为UserList测试表
==============================================================================*/
-------------------------------------------------------------------
--创建测试数据库表并插入临时数据信息
-------------------------------------------------------------------
CREATE TABLE [UserList]
[id] INT PRIMARY KEY
IDENTITY(1, 1) ,
[userName] NVARCHAR(50)
--批量插入测试用户数据信息
DECLARE @i INT
SET @i = 1
WHILE @i &= 10
INTO [UserList]
( [userName] )
( @i, '123456' )
SET @i = @i + 1
-------------------------------------------------------------------
--Sql修改表的主键字段类型以及主键名称从新设置主键主要操作步骤
-------------------------------------------------------------------
--1. 删除主键
DECLARE @Constraint_Name VARCHAR(200);
@Constraint_Name = Name
dbo.sysobjects
xtype = 'PK'
AND parent_obj = ( SELECT
[id] --表中主键
dbo.sysobjects
id = OBJECT_ID(N'[UserList]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1
EXEC ('alter table [UserList] drop constraint '+@Constraint_Name); --删除主键
--2.主键重新命名
EXEC sp_rename
'[UserList].id' ,
'UserNo' ,
--3.修改数据类型
ALTER TABLE [UserList]
ALTER COLUMN UserNo VARCHAR(30) NOT NULL;
--4.增加设置主键
ALTER TABLE [UserList]
ADD CONSTRAINT news_PK PRIMARY KEY(UserNo)
--该片段来自于http://outofmemory.cn
您可能的代码
相关聚客文章
相关专栏文章【图文】如何轻松在SQL中创建表_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何轻松在SQL中创建表
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 设置某一字段为主键 的文章

 

随机推荐