【发布时间】:2017-11-03 00:08:01
【问题描述】:
我想创建一个触发器,让我从表“DETALLES”中删除一行,在删除该特定行后,我想修改另一个名为“BOLETAS”的表和另一个名为“ARTICULOS”的表,第一个表是这样的:
例如,我想从这个表中删除一行,然后是第二个名为“ARTICULOS”的表:
!
必须用由于从表“DETALLES”列“CANTIDAD”和最后名为“BOLETAS”的表中删除的行而恢复的数量来更新他的“STOCK”:
必须更新列“TOTAL”减去从表“DETALLES”列“IMPORTE”中删除的数量。
所以基本上,必须有一个触发器让我从“DETALLES”表中删除一行并更新另外 2 个表。
例如,我决定从“DETALLES”中删除第二行,因此“ART002”的表“ARTICULOS”列“STOCK”必须加 1,因为列“CANTIDAD”和表“BOLETAS”必须是少“60”。 我试了几个小时,但我不能,对不起我的英语不好:( 这些是我用来创建表格的代码。
CREATE TABLE ARTICULOS(
CODART VARCHAR(6) PRIMARY KEY,
NOMART VARCHAR(50),
STOCK INT,
PRECIO NUMERIC(8,2))
CREATE TABLE INGRESOS(
CODART VARCHAR(6) ,
FECHA DATE,
CANTIDAD INT,
PRECIO NUMERIC(8,2),
CONSTRAINT FK1 FOREIGN KEY (CODART) REFERENCES ARTICULOS
)
CREATE TABLE
CLIENTES(
CODCLI VARCHAR(6) PRIMARY KEY,
NOMCLI VARCHAR(50),
RUCCLI INT,
DIRECCION VARCHAR(50)
DEFAULT 'DESCONOCIDA'
)
CREATE TABLE BOLETAS(
NROBOL VARCHAR(10) PRIMARY KEY NONCLUSTERED,
CODCLI VARCHAR(6),
FECHA DATE,
TOTAL NUMERIC(8,2),
CONSTRAINT
FK2 FOREIGN KEY (CODCLI) REFERENCES CLIENTES
)
CREATE TABLE DETALLES(
NROBOL VARCHAR(10) ,
CODART VARCHAR(6),
CANTIDAD INT,
IMPORTE NUMERIC(8,2),
PRIMARY KEY NONCLUSTERED (NROBOL,CODART),
CONSTRAINT FK3 FOREIGN
KEY (NROBOL) REFERENCES
BOLETAS,
CONSTRAINT FK4 FOREIGN KEY (CODART) REFERENCES ARTICULOS)
【问题讨论】:
-
触发器和程序代码是高度特定于供应商的 - 所以请添加标签以指定您是否使用
mysql、postgresql、sql-server、@ 987654332@ 或db2- 或完全不同的东西。
标签: sql triggers procedure sql-server-2016 create-table