sql server 自动生成主键编号 50
设计个表自动生成主键该表为物品信息表:CIDCNameInfo其中CID为主键,怎样才能在插入的时候自动生成CID?谢谢了我写了个触发器:setANSI_NULLSONs...
设计个表 自动生成主键
该表为物品信息表:
CID CName Info
其中CID为主键,怎样才能在插入的时候自动生成CID?
谢谢了
我写了个 触发器:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[commodity_insert] on [dbo].[commodity]
for insert
as
declare @str varchar(50)
declare @i integer
set @str='G'+left(convert(char,getdate(),112),6)
select @i=isnull(max(cast(right(rtrim(CID),len(CID)-998) as integer)),0)from
(select CID from commodity where CID like @str+'%')commodity
set @i=@i+1
insert into commodity
select @STR++cast(@i as char)as CID,CName from insertde
但在插入行数据的时候,提示结果是 :
消息 515,级别 16,状态 2,第 1 行
不能将值 NULL 插入列 'CID',表 '0.dbo.commodity';列不允许有空值。INSERT 失败。
不能自动生成主键啊!
设计表的时候 已经设置CID为主键了。 展开
该表为物品信息表:
CID CName Info
其中CID为主键,怎样才能在插入的时候自动生成CID?
谢谢了
我写了个 触发器:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[commodity_insert] on [dbo].[commodity]
for insert
as
declare @str varchar(50)
declare @i integer
set @str='G'+left(convert(char,getdate(),112),6)
select @i=isnull(max(cast(right(rtrim(CID),len(CID)-998) as integer)),0)from
(select CID from commodity where CID like @str+'%')commodity
set @i=@i+1
insert into commodity
select @STR++cast(@i as char)as CID,CName from insertde
但在插入行数据的时候,提示结果是 :
消息 515,级别 16,状态 2,第 1 行
不能将值 NULL 插入列 'CID',表 '0.dbo.commodity';列不允许有空值。INSERT 失败。
不能自动生成主键啊!
设计表的时候 已经设置CID为主键了。 展开
6个回答
展开全部
主键不是自动增长的,但可以将他设为identity,这样就会自动增长了.
CREATE TABLE new_employees
(
CID int IDENTITY(1,1),
fname varchar (20),
minit char(1),
lname varchar(30)
)
CREATE TABLE new_employees
(
CID int IDENTITY(1,1),
fname varchar (20),
minit char(1),
lname varchar(30)
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create table a
(
id int ,
name varchar2(6)
);
create SEQUENCE seq_a INCREMENT BY 1; --创建序列
create or replace TRIGGER a_insert -- 在表A上创建before insert触发器
before insert on a
for each row
declare
i_id integer;
begin
select seq_a.nextval into i_id from dual; -- seq_a.nextval是该序列的下个值
:NEW.id := i_id;
end;
insert时:
insert into a(name) values('zzc'); -- 触发器自动处理ID
select一下看看结果吧:
select * from a;
(
id int ,
name varchar2(6)
);
create SEQUENCE seq_a INCREMENT BY 1; --创建序列
create or replace TRIGGER a_insert -- 在表A上创建before insert触发器
before insert on a
for each row
declare
i_id integer;
begin
select seq_a.nextval into i_id from dual; -- seq_a.nextval是该序列的下个值
:NEW.id := i_id;
end;
insert时:
insert into a(name) values('zzc'); -- 触发器自动处理ID
select一下看看结果吧:
select * from a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接在 表的 列里 点该列的属性 里有 是否是标识 设置就可以
当然也可以在程序里create 表的时候 写CID int IDENTITY(1,1),
当然也可以在程序里create 表的时候 写CID int IDENTITY(1,1),
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询