public void UpdateCheckItemChoose(CheckItemChooseData data)
{
IDataParameter[] parameters = helper.GetSpParameterSet(cs,SQL_UPDATE);
helper.ExecuteNonQueryTypedParams(cs,SQL_UPDATE,data.CheckItemChoose[0]);
}
原本我是这样更新一条记录。现在要更新的记录的更新字段涉及到了记录的主键之一,如何处理类似,update table set a=xxx where a=bbb
{
IDataParameter[] parameters = helper.GetSpParameterSet(cs,SQL_UPDATE);
helper.ExecuteNonQueryTypedParams(cs,SQL_UPDATE,data.CheckItemChoose[0]);
}
原本我是这样更新一条记录。现在要更新的记录的更新字段涉及到了记录的主键之一,如何处理类似,update table set a=xxx where a=bbb
解决方案 »
- 表单提交回传效率思考,提交到本页,还是另起一页
- asp.net网站 整站商品实现模糊查询
- System.Net.Mail类的使用.在asp.net中如何使用它来发送邮件?(内附我的测试代码)
- 调用JS文件内部的函数出错。。。
- asp.net2.0发布
- ¥¥¥ 客户端引用服务器端控件,控件的名子到客户端就变了,这样的问题大家怎么解决的?
- 请问一下"订单"的数据库怎么设计啊?
- 求自定义工作流 流程的界面
- asp.net中用c#语言发送email 的代码 发送失败请大家指教
- DataGrid中的BoundColumn如何根据数据库中的一个字段值比如0,1,显示不同的内容比如买入、卖出?
- 我想释放资源,应该怎么做?
- .net下 如何处理主键约束错误
就是要这种效果啊是不是得送两个参数进存储过程,那ExecuteNonQueryTypedParams不就不能用了
执行update table set a=xxx where a=bbb
这句话有什么问题??ExecuteNonQueryTypedParams这个是什么东西啊?
欢迊来到麦高网-私活兼职首选平台 www.mgao.net
这样子要手工给参数赋值,太惨了
这样是不行的update table set a=xxx where a=bbb只能先Delete table where a='xxx'
在执行insert into table (a) values ('bbb')
----------------------------
那你这个主键是没意义的,还不如加个字段做主键,格式可以是"主键1_主键2_主键3_...."或直接
用“yyyymmdd_几位序号”或“业务类型_yyyymmdd_几位序号”,主键的值在触发器里做。
drop trigger [dbo].[Get_ID_test1]
GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[test1]
GOCREATE TABLE [dbo].[test1] (
[tt] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[New_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[RQ] [datetime] NULL
) ON [PRIMARY]
GOSET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO/*
产生表test1字段New_ID的ID号
ID号规则:YYYYMMDD+3位序号
说明:
表名:test1
字段名:New_ID {ID号字段名}
字段名:RQ {日期字段名}
*/
CREATE TRIGGER Get_ID_test1 ON dbo.test1
FOR INSERT
AS
begin
update t set New_ID=(select case when max(a.New_ID) is null then ltrim(rtrim(cast(convert(char(8),getdate(),112) as char)))+'001'
else left(max(a.New_ID),8)+right(right(ltrim(rtrim(max(a.New_ID))),3)+1000000000001,3) end
from test1 as a left join inserted as b on left(a.New_ID,8)=convert(char(8),b.RQ,112) )
from test1 as t inner join inserted as i on t.RQ=i.RQ
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
再运行:
insert test1 (tt) values ('33')
select * from test1
-----------------------------------
tt New_ID RQ
33 20050909001 2005-09-09 10:31:55.977
33 20050909002 2005-09-09 10:32:34.413
33 20050909003 2005-09-09 10:32:34.803这个New_ID结构只是个简单的,可以在触发器里改New_ID字段的规则,