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

表结构如下:
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)记录。
但是(条件一)与(条件二)不能同时存在
在存储过程中,插入或是更新前面的判断语句怎样写为好?

 

实现下载地址:http://download.cnblogs.com/insus/SQL/Procedure.zip

### 回答1: 栈: 是一种后进先出(LIFO)的数据结构,特点是最后加入的元素最先弹出。常用的操作有入栈和出栈。 队列: 是一种先进先出(FIFO)的数据结构,特点是最先加入的元素最先出队。常用的操作有入队和出队。 队列是满的: 一般是通过判断队列的长度是否等于它的最大长度来确定。 队列是空的: 一般是通过判断队列的长度是否为0来确定。 利用栈实现加减乘除: 可以通过使用两个栈来实现,一个栈用来存储运算符,另一个栈用来存储操作数。通过读入表达式的每一个元素进行判断,如果是操作数则压入操作数栈,如果是运算符则压入运算符栈,如果是括号则进行相应的操作。最后按照运算符栈的顺序将操作数栈的元素弹出并进行运算。 ### 回答2: 栈(Stack)是一种后进先出(LIFO)的数据结构,即最后存入的元素首先取出。栈的特点如下: 1. 只能在栈的一端进行插入和删除操作,该端称为栈顶。 2. 栈元素的插入操作称为入栈(push),元素的删除操作称为出栈(pop)。 3. 栈只能访问或操作栈顶的元素。 队列(Queue)是一种先进先出(FIFO)的数据结构,即最先插入的元素首先取出。队列的特点如下: 1. 只能在队列的一端进行插入操作,称为队尾,而只能在另一端进行删除操作,称为队头。 2. 元素的插入操作称为入队(enqueue),元素的删除操作称为出队(dequeue)。 判断一个队列是否为空的条件是队列的元素个数是否为零,即队列的长度是否为零。 判断一个队列是否为满的条件是队列的元素个数是否等于队列的容量大小。 利用栈来实现加减乘除可以通过以下步骤: 1. 定义两个栈,一个用于存放操作数,一个用于存放操作符。 2. 遍历输入的表达式,依次处理每个字符。 3. 如果遇到数字,则将其压入操作数栈。 4. 如果遇到操作符,则判断操作符栈的栈顶操作符与当操作符的优先级,决定是否先计算栈的表达式。 5. 如果操作符栈为空或栈顶操作符为左括号,则直接将当操作符压入操作符栈。 6. 如果当操作符为右括号,则弹出操作符栈的操作符,将其与操作数栈的操作数进行计算,并将结果压入操作数栈,直到遇到左括号为止。 7. 最后,操作符栈所有剩余的操作符都要与操作数栈的操作数进行计算,直到操作符栈为空。 8. 最后操作数栈剩余的一个数就是最终的计算结果。 以上是关于栈和队列的特点、判断队列为空或满的方法,以及利用栈来实现加减乘除的简要介绍。 ### 回答3: 栈和队列是常用的数据结构,它们具有不同的特点。 栈具有后进先出(LIFO)的特点,即最后进入的元素首先被访问。栈一般有两个基本操作:压入(push)和弹出(pop)。压入操作将元素放入栈顶,而弹出操作从栈顶移除元素。栈的实现可以使用顺序存储结构(数组)或链式存储结构(链表)。 队列具有先进先出(FIFO)的特点,即最先进入的元素首先被访问。队列一般有两个基本操作:入队(enqueue)和出队(dequeue)。入队操作将元素添加到队列的末尾,而出队操作从队列的首部移除元素。队列的实现也可以使用数组或链表。 判断一个队列是否为空可以通过检查队列的元素个数,如果元素个数为0则为空。判断队列是否满了一般需要维护额外的变量来记录队列的容量,如果队列已满则无法再添加新的元素。 利用栈来实现加减乘除运算,可以使用逆波兰表达式(后缀表达式)。以加法为例,首先将所有操作数和操作符按照从左到右的顺序扫描,将操作数放入栈。当遇到操作符时,从栈弹出两个操作数执行运算,然后将结果放回栈。继续扫描直到表达式结束,最后栈剩下的元素即为表达式的结果。 例如,对于表达式3 + 4 - 2,可以按照以下步骤计算: 1. 将3和4依次压入栈。 2. 遇到加号操作符,从栈弹出4和3,计算得到7,将结果7压入栈。 3. 遇到减号操作符,从栈弹出7和2,计算得到5,将结果5压入栈。 4. 表达式结束,栈的元素5即为结果。 同样的方法也可以用于实现乘法和除法运算,只需要将对应的操作符处理逻辑修改为相应的运算即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值