CREATE PROCEDURE check_in_confirm_return
@ctn_no character(12),
@in_date datetime,
@id_no character(10)
AS
update load_ctn_details set load_ctn_details.goods_reach='1' from load_ctn_details,load_ctn_head,load_ctn_ctns where load_ctn_head.detail_no = load_ctn_details.detail_no and load_ctn_ctns.ctn_key_id=load_ctn_details.ctn_key_id and load_ctn_ctns.ctn_no = @ctn_no and load_ctn_head.dept_id='C' and (load_ctn_details.goods_reach='0') GO表结构如下
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[load_ctn_details]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[load_ctn_details]
GOCREATE TABLE [dbo].[load_ctn_details] (
[load_key_id] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,
[detail_no] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[bl_key_id] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
[ctn_bl_weight] [decimal](18, 3) NULL ,
[ctn_bl_package] [int] NULL ,
[ctn_real_package] [int] NULL ,
[ctn_bl_size] [decimal](18, 3) NULL ,
[input_seq] [int] NOT NULL ,
[ctn_key_id] [varchar] (12) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[po_no] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[item_no] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[cargo_no] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[guobie] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[batch_seq_no] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
[goods_reach] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[import_id] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[plan_match_id] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[goods_match] [char] (1) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GOALTER TABLE [dbo].[load_ctn_details] WITH NOCHECK ADD
CONSTRAINT [PK_load_ctn_details] PRIMARY KEY CLUSTERED
(
[load_key_id]
) ON [PRIMARY]
GOALTER TABLE [dbo].[load_ctn_details] ADD
CONSTRAINT [f_bl_id] FOREIGN KEY
(
[bl_key_id]
) REFERENCES [dbo].[load_ctn_bls] (
[bl_key_id]
)
GO
sqlserver无法唯一定位到行来执行update或delete操作.可以测试:
create table ta(v varchar)
insert ta select 1 union all select 1go打开企业管理器,展开表,打开ta表
选中任一行记录,点删除,即报此错误。
解决:
加一列或列主合为主健,或加一不重复的列,比如标识列,guid等等。或对某个列加唯一约束(当行重复时,无法加唯一约束)。