存储过程插入或是更新前的判断如何去写?

insus 2009-04-22 10:06:01
表结构如下:
TABLE WorkTicketRecord
(
WorkTicketRecordId int identity(1,1) primary key NOT NULL,
WorkTickeId int NOT NULL FOREIGN KEY...
MachineId int NULL FOREIGN KEY...
...
)

记录可插入条件如下(相同的WorkTickeId ):
(条件一)只可以插入笔 WorkTickeId + MachineId(Null)记录。
或者
(条件二)可以插入一笔或多笔 WorkTickeId + MachineId(NOT NULL)记录。
但是(条件一)与(条件二)不能同时存在

在存储过程中,插入或是更新前面的判断语句怎样写为好?谢谢!
...全文
243 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
insus 2009-04-23
  • 打赏
  • 举报
回复
多谢楼上几位支持,
Insus.NET在昨天下午已经解决:
http://www.cnblogs.com/insus/articles/1441567.html
carl_8888 2009-04-23
  • 打赏
  • 举报
回复
用 GOTO 也行
ks_reny 2009-04-22
  • 打赏
  • 举报
回复

if
begin
end
else
begin
end
insus 2009-04-22
  • 打赏
  • 举报
回复
看来要补充一下:
如果用户先用(条件一)插入记录之后,不管是第一种还第二种条件记录,再不能插入了.
如果用户先用(条件二)插入记录之后.那第一种条件记录不能插入,而第二种的条件记录,还是继续插入的.
  • 打赏
  • 举报
回复
是加个 不是价格
insus 2009-04-22
  • 打赏
  • 举报
回复
To Jijumwu:
Sorry,刚才发帖时,点错区域了.
  • 打赏
  • 举报
回复
无语 刚才还在 .NET区 怎么就到Sql区了

create proc Insert_WorkTicketRecord
(
@WorkTickeId int,
@MachineId int,
@tiaojian int --价格条件判断是一还是二
)
as
if(@tiaojian==1)
begin
delete from WorkTicketRecord where WorkTickeId=@WorkTickeId--先删除
insert into WorkTicketRecord(WorkTickeId,MachineId) avlues(@WorkTickeId,@MachineId)-- 再插入
end
else
begin
insert into WorkTicketRecord(WorkTickeId,MachineId) avlues(@WorkTickeId,@MachineId)
end

  • 打赏
  • 举报
回复

create proc Insert_WorkTicketRecord
(
@WorkTickeId int,
@MachineId int,
@tiaojian int, --价格条件判断是一还是二
@exists int
)
as
if(@tiaojian==1)
begin
if(exists(select * from WorkTicketRecord where WorkTickeId=@WorkTickeId))
set @exists=1 --返回一个标识表示存在无法插入记录
else
insert into WorkTicketRecord(WorkTickeId,MachineId) avlues(@WorkTickeId,@MachineId)
end
else
begin
insert into WorkTicketRecord(WorkTickeId,MachineId) avlues(@WorkTickeId,@MachineId)
end
  • 打赏
  • 举报
回复
。。。。为什么回不了?
-晴天 2009-04-22
  • 打赏
  • 举报
回复
由存储过程插入多笔记录???
一笔好办,向存储过程传递一次数据就行了.
多笔?一次向存储过程传递多组数据吗?还是由表来插入?
判断的话,无非就是 exists, is null, and, or 之类的逻辑表达式罢了.
  • 打赏
  • 举报
回复
为什么说帖子 不存在?
  • 打赏
  • 举报
回复
(条件一)只可以插入一笔 WorkTickeId + MachineId(Null)记录。
或者
(条件二)可以插入一笔或多笔 WorkTickeId + MachineId(NOT NULL)记录。

if @MachineId is null
insert into tb ()
else
……
ws_hgo 2009-04-22
  • 打赏
  • 举报
回复
while exists()
begin
...........
end
else
begin
...........
end
htl258_Tony 2009-04-22
  • 打赏
  • 举报
回复
if not exists(select ...)
insert ...
真相重于对错 2009-04-22
  • 打赏
  • 举报
回复
if exists select.....
lutianling521 2009-04-22
  • 打赏
  • 举报
回复
学习
Rotel-刘志东 2009-04-22
  • 打赏
  • 举报
回复
if ()
insert...
条件在前呀!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧