我尽量简短明了。
我想要一个名为“payments”的表绑定到多个表,这些表表示一个公司提供的多种类型的服务。为每个服务表添加一个“payment”外键并将它们链接到“payments”中的主键相当简单,但问题是实际的:
我想创建一个(libre office base)表单来添加付款。但这不仅需要插入到多个表中(info的“payments”表和外键的给定“service”表),还需要在表单本身创建主键之前将主键添加到外键表中。所以这个选择似乎不可行。
我试图用另一种方法来实现这一点——将外键“service”放入“payments”表中,并从其他表中插入id(主键),但所说的主键是简单整数,添加say servicea的id=1会使数据库误认为所有其他表中的id=1对象也是“pay”的。我知道我可以通过使它们变为varchar而不是整数来区分这些表之间的id,但是我不认为有办法使它们自动填充,对吗?
最后,我想也许一个“分类”选项会有所帮助-从服务类型中选择(例如“手术”、“药品销售”、“检查”),然后键入一个ID。这可以让我选择在查询中分隔相同的id号。但是,这并不能解决这样一个问题,即在其他任何一个表都没有这样的id的情况下,试图从“surgeries”中插入id=40将抛出一个明显的错误,即关系冲突,因为数据库会认为该条目没有指向任何地方。
我真的很难从这一团糟中找到一个简单的解决办法。我认为最适合我的选择是以某种方式使autofill主键在表之间不同,但在这一点上,我会接受任何建议。在libre office base中是否有可能创建一个某种程度上符合我需要的表单?
2条答案
按热度按时间dzjeubhm1#
尝试使用触发器,插入主触发器后,将调用触发器,并将其他信息添加到其他表中。
enyaitl32#
我想我已经找到了一个方法来做我需要的事情。
首先,我创建了一个名为“for”的表,其中只有一个字段-一个自动递增的bigint id。然后,我在这个表和我的“services”表的id(现在显然也是bigint)之间创建了一个关系。这样,它们现在都具有自动递增的id(来自“for”的外键),但它们之间没有一个重复的id。我的数据库没有被混淆id属于哪个表的风险。
接下来,我创建了一个名为“ps”(表示“payments&services”)的表,作为多重关系中的“中间”表。我希望人们用一次付款支付许多服务,如果他们愿意的话,但也让他们用多个较小的付款支付单个服务。因此,表“for”有一个字段,用于“payments”(id)中的外键和“for”(又名services中的id)中的外键。
听起来可能是一团糟,但我认为这是最好的解决办法。
现在,我有一些其他的麻烦与“添加付款”的形式,我试图使,所以。。。再见,我猜是一个问题;)