服务器: 消息 2627,级别 14,状态 1,过程 pr_TableName_View,行 6
违反了 PRIMARY KEY 约束 'PK_TableName'。不能在对象 'TableName' 中插入重复键。
语句已终止。
我也想不通明明没有重复的值为什么报重复插入呢,不解中...
违反了 PRIMARY KEY 约束 'PK_TableName'。不能在对象 'TableName' 中插入重复键。
语句已终止。
我也想不通明明没有重复的值为什么报重复插入呢,不解中...
Returns char(3)
As
Begin
Return(Select Right(1000001 + Isnull(Right(Max(IDCode),3),0),3)
From TableName With(Xlock,Paglock))
End
Go
Create Table TableName --存放自己创建的表的所有信息(有问题,不能添加信息,有重复键出现,但一条数据一条数据添加没有问题)
(
IDCode char(3) DEFAULT dbo.f_TableNameIDCode(),
Name varchar(30),
Xtype char(2),
Crdate datetime,
Res varchar(255),
Constraint PK_TableName Primary Key (IDCode)
)
GoCreate Procedure pr_TableName_View
As
Begin
Truncate Table TableName
Insert Into TableName([Name],Xtype,Crdate)
Select Convert(varchar(30),[name]),xtype,crdate From sysobjects
Where (xtype = 'U') Or ([name] Like 'pr_%') Or([name] Like 'tr_%') Or ([name] Like 'vW_%') Order By xtype
End
Go
Exec pr_TableName_View
Select * From TableName
Drop Table TableName
Drop Function f_TableNameIDCode
Drop Procedure pr_TableName_View
================〉
字段定义的长度太小,字符串会截断,出现重复值,改为ID Code varchar(100)
Select Convert(varchar(30),[name]),xtype,crdate From sysobjects
Where (xtype = 'U') Or ([name] Like 'pr_%') Or([name] Like 'tr_%') Or ([name] Like 'vW_%') Order By xtype这一句是作为一个事务运行的,因此函数f_TableNameIDCode计算出来的 IDCode是同一个值,但是IDCode上又有主键约束
Create Table TableName --存放自己创建的表的所有信息(有问题,不能添加信息,有重复键出现,但一条数据一条数据添加没有问题)
(
ID int identity,
IDCode as right(convert(varchar,(100000+ID)),3),
Name varchar(30),
Xtype char(2),
Crdate datetime,
Res varchar(255)
)
GoCreate Procedure pr_TableName_View
As
Begin
Truncate Table TableName
Insert Into TableName([Name],Xtype,Crdate)
Select Convert(varchar(30),[name]),xtype,crdate From sysobjects
Where (xtype = 'U') Or ([name] Like 'pr_%') Or([name] Like 'tr_%') Or ([name] Like 'vW_%') Order By xtype
End
Go
Exec pr_TableName_View
Select * From TableName
Drop Table TableName
Drop Procedure pr_TableName_View
无法在表 'TableName' 中可为空的列上定义 PRIMARY KEY 约束。
服务器: 消息 1750,级别 16,状态 1,行 1
未能创建约束。请参阅前面的错误信息。