我有一张名为“moneyincome”的表格
代码整数自动增量 钱dobule income_date日期
然后我又称为“availablecash”
代码整数 钱双倍
我的问题是:当我在表格“moneyincome”中插入一个值时,我需要复制此值并“覆盖”或“重写”availablecash中的值(在“money”字段中)作为该表中的唯一值但旁边“添加”新值到availableblcash表中的现有值... 我认为触发器会很好 - 我一直在寻找整个网络中的这些信息,但我无法得到我需要的东西。 不知道我是否清楚解释这一点。对不起英语不是我的母语。谢谢大家!这个网站真棒!我知道你会发布一些能以某种方式帮助我的东西。此致!
我会尝试更好地解释这一点。
我有一个名为MoneyIncome的表,它将通过从java接口添加一些数据来填充..一个java桌面应用程序。
用户将键入需要支付多少钱,然后他必须保存该操作。
我想要的是:当他保存该操作时,“触发器”会将此值复制到另一个名为“availablemoney”的表中。
这个表(availableMoney)它没有任何关联。它是一个免费的表,并且没有autoinc键,因为我只想要一个值..最后一个值将是用户在表moneyincome中添加的旧的值。
[西班牙文]
Cuando ingreso un valor en la tabla dineroentrada en su campo“dinero”,necesitoqueéstevalorse copie y reemplace y ademas“sume”el valor del campo“dinero”de la tabla efectivodisponible。 Creo que un触发seríalomejor- Pero he estado buscando y no consigo dar con lo que quiero- Gracias este sitio es asombroso
答案 0 :(得分:1)
将值从一个表复制到另一个表与规范化相反,因为您已经通过原始表可以随时获得该值。
但是,您可能有多个moneyincome行,并且您希望availablecash能够反映可用的总金额。
e.g。 在 moneyincome 表格中,您可能会有以下内容: -
并希望余额名为 availablecash ,即115.00。
您不需要另一个表格,您可以通过查询来确定这一点(您无论如何都要查询另一个表格以获得商店余额),例如。
SELECT sum(money) AS availablecash FROM moneyincome;
但是,如果你想要一个TRIGGER;考虑到您的要求似乎是矛盾的(您希望用该表中的唯一值替换),以下内容将创建一个TRIGGER,当新行添加新条目时,将在 availablecash 表中插入一个新条目被插入 moneyincome 表: -
CREATE TRIGGER IF NOT EXISTS myavailablecashtrigger
AFTER INSERT ON moneyincome
BEGIN
INSERT INTO availablecash VALUES(new.code,new.money);
END;
基于上述3行插入 moneyincome 表的结果将是 availablecash 表格为: -
根据您更新的要求,您实际上需要两个触发器(除非您最初在availablecash表中创建了1行)。如果不存在则插入新行,然后使用正常行来更新行。
这里有两个触发器: -
-- Normal Trigger (when row already exists in the availablecash table)
CREATE TRIGGER IF NOT EXISTS myavailablecashtrigger
AFTER INSERT ON moneyincome WHEN (SELECT count() FROM availablecash)
BEGIN
--UPDATE availablecash SET money = new.money;
UPDATE availablecash SET money = new.money, code = new.code;
END;
-- Trigger for when availablecash table is empty
CREATE TRIGGER IF NOT EXISTS myavailablecashtrigger_nodata
AFTER INSERT ON moneyincome WHEN (SELECT count() FROM availablecash) = 0
BEGIN
INSERT INTO availablecash VALUES(new.code,new.money);
END;
答案 1 :(得分:0)
让我们记住。我有2个表“MoneyIncome”和“AvailableCash”,这个代码可以工作,但只是当我插入一个新值。如果我在表MoneyIncome中编辑一个值,它就不起作用。当我尝试编辑我的MoneyIncome中的任何值并且它提交时,我的另一个表中没有任何事情发生..正如你在这个可能的解决方案中看到的那样,这是“和并覆盖”我的表AvailableCash中的旧值。但在编辑模式下,它不起作用。
这里是我的2个结构表
MoneyIncome 代码:整数:Pk:Autoinc 钱:双倍
AvailableCash
代码:Pk not Autoinc
CREATE TRIGGER update_value
AFTER INSERT
ON MoneyIncome
WHEN (
SELECT count()
FROM AvailableCash
BEGIN
UPDATE AvailableCash
SET availablemoney = (new.money + availablemoney),
code = new.code;
END;
我不知道如何才能在编辑模式下工作。非常感谢你帮助我。