重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
增加属性应该是这样写的吧
从事达州电信机房,服务器租用,云主机,雅安服务器托管,空间域名,CDN,网络代维等服务。
ALTER TABLE cust_id ADD cust_id_seq number(9) identity(1,1)
如果你要搞sequence
CREATE SEQUENCE cust_id_seq
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999
NOCYCLE;
增加的时候用cust_id_seq.nextval
SQL Server没有序列,对应的是标识列。
该种列具有以下三种特点:
1、列的数据类型为不带小数的数值类型
2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
3、列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。
标识列的创建与修改
标识列的创建与修改,通常在企业管理器和用Transact-SQL语句都可实现,使用企业管理管理器比较简单,请参考SQL Server的联机帮助,这
里只讨论使用Transact-SQL的方法
1、创建表时指定标识列
标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。
下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列
CREATE TABLE T_test
(ID int IDENTITY(1,1),
Name varchar(50)
)
--插入数据
INSERT T_test(Name) VALUES('张三');
〉比豢梢裕��且桓霰碇兄荒苡幸桓鯥DENTITY字段!我要是想在一个表里使用多个类似IDENTITY的字段呢?如是oracle,用序列就可以实现,只要给该字段指定一个序列就可以了!在SQLSERVER中如何实现呢?SQL2000可以有自定义函数,我们可以自定义一个函数,来产生一个序列,然后在给需要使用该序列的字段指定该函数即可!下面是一个例子:假设:存在表CREATE TABLE tmp(identityID INT identity(1,1) PRIMARY KEY,
iID INT,
sName CHAR(2))GO其中identityID是一个IDENTITY字段,
我们创建以下函数:
CREATE FUNCTION sqlSequence()
RETURNS INTASBEGINDECLARE @MINNUM INT
DECLARE @MAXNUM INT
SET @MINNUM=2
SET @MAXNUM=99/*您可以设置该函数允许的最大(99)、小(2)值,代表从取2-99,超过此最大值返回0(您可以加上自己的处理),
仿oracle的sequence中的设置*/RETURN( SELECT CASE
WHEN ISNULL(MAX(iID),@MINNUM-1)+1 @MAXNUM THEN 0
ELSE ISNULL(MAX(iID),@MINNUM-1)+1ENDFROM TMP)ENDGO然后给表tmp的字段iID的默认值指定为dbo.sqlSequence(),
然后再插入时使用如下语句即可
insert into tmp(sname) values(1);
插入一些记录后看看效果吧!
其实还可以给该函数加上更多的功能,如可以返回一个降序的序列,
也可以返回一个字符串的序列。
会写存储过程吗?
会写触发吗?
如果会,如果能看懂以下代码你就能完成,否则,你需要看看存储过程相关的书。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION V_GetStr
(
@位数 int, --需要的位数(范围1-32)
@数值 int --需要的数值
)
RETURNS varchar(32)
AS
BEGIN
declare @r varchar(16)
declare @r2 varchar(16)
declare @r3 varchar(32)
declare @r4 varchar(32)
select @r='0000000000000000'
select @r2 = @数值
select @r3 = @r + @r2
select @r4= right(@r3,@位数)
return(@r4)
END
GO
--调用示例(生成10位长度的),注意以下调用需要在存储过程中完成
--declare @IDme varchar(16)
--select @IDme = (select beyczyxx.ID from beyczyxx where beyczyxx.ID = 1 )
--select dbo.V_GetStr(10,@IDme)
创建序列后,可以实现表格中的列自增长,因为oracle中没有sqlserver中的自增长功能,只能采用序列的方式来实现。使用的时候,your_sqeuence_name.Nextval即可取得序列当前的值。
例子可以参考下面的评论:放在这个上面百度提示有不适合发表的地方。
sqlserver没有序列这个东西,
有自增长identity属性。
可以为表的主键列(数字类型)增加自增长属性。