当前位置:首页 » 编程语言 » sql触发器单价
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql触发器单价

发布时间: 2022-09-26 15:12:00

sql触发器 需要三个触发器 通过条形码自动更新单价 和算出单价和数量总和

1.
CREATETRIGGERTRI_A
ON销售表
FORINSERT
AS
BEGIN
UPDATE商品信息表
SETA.单价=B.单价
FROM商品信息表A,INSERTEDB
WHEREA.条形码=B.条形码
END
GO

2.描述不清晰,什么叫用户编号和销售时间为一致,根据什么依据来填写数据,例如,表里已经有一条记录了,销售号为001,那新插入的记录如果销售号为001,那新记录的用户编号和销售时间就同步成原来的记录的编号和时间么?

3.

CREATETRIGGERTRI_C
ON销售表
FORINSERT
AS
BEGIN
UPDATE销售表
SET总额=ISNULL(单价,0)*ISNULL(数量,0)
END

㈡ 请帮我做一个触发器谢谢 在SQL2000中数据库为DATA_016_2011表名为Inventory 字段有 名称、单价、最新单价

单价更新后自动更新最新单价,那不就是两个单价永远一致,一个表两个字段如果一致,保留一个字段就可以了。多出来的一个字段就是垃圾数据。

Create trigger tr_Inventory on Inventory
for insert,update
as
update Inventory set 最新单价=inserted.单价 from inserted where inserted.名称=Inventory.名称

㈢ 用SQL语言 建立触发器 trigger

请补充表结构。

设:orders表(订单号,客户编号,订单日期,本次折扣)
[order details]表(订单号,货号,单位,数量,单价)
触发器代码如下:
create trgger trUpCount
on orders
for insert
as
update orders set 本次折扣=0.2
where exists(
select 客户编号 from inserted
where inserted.客户编号=orders.客户编号 and 订单日期<getdate()
group by orders.客户编号
having Count(*) >20
)

㈣ sql server触发器问题,一个表里有个单价,另一个表里有数量,第三个表有个总价是单价乘以数量,怎么做

先要on表,再after insert ,改成:
create trigger Insert_bill
on dbo.采购清单
after insert

㈤ 求一段SQL触发器语法

ALTERTRIGGER[dbo].[dingdan]ON[dbo].[ordBillSub]
FORUPDATE,Insert
AS
BEGIN
--要是你的ordbillsub这个表有行号,直接拼成一个字符串,然后判断抛出异常
SETNOCOUNTON;
Declare@MSGNVarchar(1000)=''
select@MSG=@MSG+',第'+a.行号+'行'
.prodid=b.prodidwherea.flag=2anda.price<>b.suggestprice
if@msg<>''
Begin
Set@MSG=stuff(@MSG,1,1,'')+'存在产品单价不等于建议售价,不可复核'
RAISERROR(@MSG,11,1)
End
END
Go


ALTERTRIGGER[dbo].[dingdan]ON[dbo].[ordBillSub]
FORUPDATE,Insert
AS
BEGIN
--要是你的ordbillsub这个表没有行号,就构造一个行号,在拼成一个字符串,然后判断抛出异常
SETNOCOUNTON;
Declare@MSGNVarchar(1000)=''
Select@MSG=@MSG+',第'+行号+'行'From(
SelectRow_Number()Over(OrderByGetdate())As行号
.prodid=b.prodidwherea.flag=2anda.price<>b.suggestprice
)S
if@msg<>''
Begin
Set@MSG=stuff(@MSG,1,1,'')+'存在产品单价不等于建议售价,不可复核'
RAISERROR(@MSG,11,1)
End
END
Go

㈥ sql 触发器条件:如果属于1-40,就必须是’A‘并且价格为‘3’

先说你第一个问题,@ComputerNumber是判断属于1-40的,你不能用varchar这个数据类型,否则333之类的也在1-40之间,这个不赘述,自己可以测试字符类型的数字排序情况。

还有你if判断什么的太多了,最后自己都昏了。

创建测试表:

createtableComputer
(ComputerNumberint,
AreaNumbervarchar(10),
pricemoney)

触发器:

createtriggertrig_Computer_price_3
onComputer
afterinsert
as
declare@ComputerNumberint
declare@AreaNumbervarchar(10)
declare@priceMoney
set@ComputerNumber=()
set@AreaNumber=(select@AreaNumberfrominserted)
set@price=(select@pricefrominserted)
if(exists(select*((AreaNumber!='A')or(price!=3))))
begin
print'数据不对,1-40号属于A区,单价为3元!'
rollbacktransaction
end

测试语句:

insertintoComputervalues(6,'A',1)

执行结果:

当然,数据也无法插入进去。

㈦ sql触发器连锁更新:入库表的入库数量和单价改变时,及时更新库存表的库存数量和单价。在线急求帮助啊。

CREATE TRIGGER [entry_trigger] ON [dbo].[entry]
FOR update
AS
begin
update storage set storage.amount=inserted.amount,storage.price=inserted.price from storage inner join inserted on inserted.proctid=storage.proctid

end

㈧ SQL同一个表中单价*数量=总价动态更新的触发器怎么写

--update更新类型触发器
createtrigger触发器名称
on表名
forupdate
as
--列级触发器:是否更新了数量
if(update(数量))
begin
UPDATE表名
SET总价=单价*数量
--条件语句
WHEREID=1
end

go