SQL触发器,插入语句
我有两个sql表,分别叫scan_sc
和rescan_rsc
。扫描表如下所示:SQL触发器,插入语句
CREATE TABLE scan_sc
(
id_sc int(4),
Type_sc varchar(255),
ReScan_sc varchar(255),
PRIMARY KEY (id_sc)
)
当扫描文档时,我在扫描表中插入一行。如果扫描结果很差,我必须重新扫描,因此我有一个重新扫描表。
CREATE TABLE rescan_rsc
(
id_rsc int(4),
Scan_rsc varchar(255),
PRIMARY KEY (id_rsc)
)
的问题是,我想有一个触发器,它们将在列ReScannet_sc
填充的"x"
,在scan_sc
表,这样我就可以看到,一直在这里的一些问题。
触发器必须在重扫描表的ID与扫描表中的ID相同的情况下执行此操作。
希望你们都明白我的问题。
在此先感谢。
你真的需要ReScan_sc
列和触发器吗?
使用简单的JOIN
,您可以找到scan_sc
表中已重新扫描的记录,根本不使用ReScan_sc
列。
有几种可能性:
显示所有扫描,与重新扫描ID的附加列,如果有的话:
SELECT scan_sc.*, rescan_sc.id_rsc
FROM scan_sc
LEFT JOIN rescan_sc ON scan_sc.id_sc = rescan_sc.id_rsc
只显示已重新扫描的扫描:
SELECT scan_sc.*
FROM scan_sc
INNER JOIN rescan_sc ON scan_sc.id_sc = rescan_sc.id_rsc
(我认为id_sc
和id_rsc
是主键,而PRIMARY KEY (id_sd)
是一个错字,就像在他的评论中指出的marc_s)
然后我没有tabel,用户可以键入重新扫描的文档,如果我理解您的解决方案正确。 – Thomas
你仍然有两个表。 'rescan_sc'表将保持原样,只有'scan_sc'表中的'Rescan_sc'列将不再需要(而且根本不需要触发器)。 –
你不**有**这样做,这只是一个替代的建议。如果你愿意的话,你仍然可以用触发器来做到这一点(但之后我无法帮助你,因为我不知道如何在MySQL中编写触发器)。 –
您正在使用哪些DBMS? –
**什么**数据库和哪个版本?? ** SQL **只是结构化查询语言 - 许多**数据库系统使用的语言 - ** SQL **是** NOT **数据库产品......这类东西通常是**供应商 - 特定的** - 所以我们真的需要知道你正在使用的数据库系统**。 –
Neiter你的scan_sc或你的'rescan_rsc'表都有一个名为'id_sd'的列,但这是主键对彼此而言??其中一个mysql数据库 –