重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、首先,打开sqlserver软件,右键点击要设计的表选择设计,选中一列右键设置主键,该列就设置成了主键了,删除主键同理,设置好了前面有一把钥匙。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站建设、外贸网站建设、沅江网络推广、重庆小程序开发公司、沅江网络营销、沅江企业策划、沅江品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供沅江建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
2、设置唯一键和索引键也是右键选中的列(空白的地方也行),点击‘索引/键’。
3、这里注意,刚刚选择的列不是在那个选中的列上设置,而是以整个表来设置的,因此能看到刚才设置的主键。
4、现在不是改信息而是新建一个,点击添加。
5、然后点击列,出来隐藏的省略号,再点击它。
6、选择要设置的列,后面可以设置排序。
7、再点击类型可以设置唯一键/索引/列存储索引,选择需要设置的。
8、最后就设置完成了,点击保存,到此就完成了。
列设成整型,并自增
SqlServer中的自增的ID的最后的值:
SELECT SCOPE_IDENTITY() --返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。SELECT @@IDENTITY --返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值SELECT IDENT_CURRENT('TbName')--不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。对于马上使用的刚才插入的新记录ID用SCOPE_IDENTITY()是最合适的;对于想要得到一系列的操作中最后得到的那个自增的ID最好用@@IDENTITY;对于想要得到一个表中的最后一个插入操作所产生的ID的最好用IDENT_CURRENT('TBName') DECLARE @TMP_ID INT SET @TMP_ID = IDENT_CURRENT('BID_EvaluateItem') IF ((@TMP_ID IS NOT NULL) AND (@TMP_ID 0)) BEGIN --其它的操作
设成GUID类型 select newid() 可保证全球唯一
Id 速度快,但在各服务器间会重复,GUID不会。
1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2、查询SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties')) 3、在Sql查询分析器,还有一个简单的查询方法: EXEC sp_MSforeachtable @command1="sp_spaceused '?'" 执行完之后,就可以看到数据库中所有用户表的信息 4、查询总存储过程数:select count(*) 总存储过程数 from sysobjects where xtype='p' 附:xtype类型D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束L = 日志FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程S = 系统表TF = 表函数
TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程 另:在sqlserver中取得某个数据库中所有表名的sql语句 select sysobjects.name from sysobjects.xtype ='U';SELECT name
WHERE (xtype = 'U') 在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名 注意:一般通过上述方法获得全部用户表示都会有一个dtproperties表,SQLSERVER 默认它也是用户表,想要从用户表中排出,需要加上限定条件 status0,即:select * from sysobjects where xtype='U' and status0
select sys.fn_PhysLocFormatter(%%physloc%%) as RID, *
from table a
CROSS APPLY sys.fn_physLocCracker (%%physloc%%) AS plc
借用系统视图来生成
首先说明一点,主键又称主键约束,它也是一种约束,看下它和唯一约束的创建语法:
alter
table
Person
add
constraint
PK_Id
primary
key
(Id)
alter
table
Person
add
constraint
UQ_Name
unique
(Name)
主键和唯一约束都要求字段值唯一,除此外,它们还有如下区别:
·同一张表只能有一个主键,但能有多个唯一约束;
·主键字段值不能为NULL,唯一约束字段值可以为NULL;
·主键字段可以做为其他表的外键,唯一约束字段不可以做为其他表的外键;
·SQLServer默认为主键字段创建聚集索引,为唯一约束字段创建非聚集索引;
主键,唯一,但是不能为空;唯一约束,唯一,但是可以为空
将那个字段设为主键
------解决方案--------------------------------------------------------
要不然
你只能在逻辑上做判断、先查询数据是否有当前的符号、如果有
就另填。没有的话,就插入
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
要是这个字段不是外键的话,可以设成主键,否则,可以由数据库的标识字段做主键,给这一列
加上唯一约束
------解决方案--------------------------------------------------------
主键或者unique
约束(这个oracle
有,不知sqlserver
有没有)。
这个好像不行吧。
------解决方案--------------------------------------------------------
设主键。用sequence
自增。设置主键
然后也可以写触发器做判断修改