从字符串中获取属性

Get attribute from string

我正在制作一个数据库并且我有

CREATE TABLE reserva ( 
 id_clinica       NUMBER, 
 APOSITIVO       DECIMAL(10,4), 
 ANEGATIVO         DECIMAL(10,4), 
 BPOSITIVO       DECIMAL(10,4), 
 BNEGATIVO         DECIMAL(10,4), 
 ABPOSITIVO       DECIMAL(10,4), 
 ABNEGATIVO         DECIMAL(10,4), 
 OPOSITIVO       DECIMAL(10,4), 
 ONEGATIVO         DECIMAL(10,4), 
);

CREATE TABLE donante (  
 dni_donante     VARCHAR(9), 
 fecha_alta DATE, 
 movil  VARCHAR(9),
 nombre VARCHAR(20),
 apellido1 VARCHAR(20),
 apellido2 VARCHAR(20),
 tipo_sangre VARCHAR(15),
);

在 table donante 中,属性 "tipo_sangre" 将始终为 "APOSITIVO"、"ANEGATIVO"、"BPOSITIVO"、BNEGATIVO" 等。

我想创建一个触发器,当在另一个 table 上插入一行时,将从 donante 获取 "tipo_sangre" 并将数字添加到 table reserva 的对应属性.

除了为 tipo_sangre 声明一个变量并做一个 switch case 之外,还有什么办法可以做到这一点吗?

先谢谢你:)

如果第一个 table 只是简单地为您提供第二个 table 中行的血型计数,我建议重新考虑数据库设计。你只需要 "dimension" table 血型(单列,八行,显示血型名称)。此列应该是主键。那么 donate 中的 tipo-sangre 应该有一个外键约束,引用这个血型 table。最后,对于计数,您不需要 table,您需要一个视图。基于这样的查询:

select count(case tipo_sangre when 'apositivo' then 1 end) as apositivo,
       count(case tipo_sangre when 'anegativo' then 1 end) as anegativo, 
       .....
       count(case tipo_sangre when 'onegativo' then 1 end) as onegativo
from donate

不要创建单独的 table 来存储这些计数;这只会在将来造成麻烦,因为您将拥有冗余数据,这些数据在某些时候可能会出于多种原因自相矛盾。