从字符串中获取属性

时间:2016-05-30 11:19:08

标签: sql oracle oracle-sqldeveloper

我正在创建一个数据库,我有

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),
);

在表donante中,属性“tipo_sangre”将始终为“APOSITIVO”,“ANEGATIVO”,“BPOSITIVO”,BNEGATIVO“等。

我想设置一个触发器,当在另一个表上插入一行时,将从donante获取“tipo_sangre”,并在其中添加一个数字到表的预留的对应属性。

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

事先谢谢你:)

1 个答案:

答案 0 :(得分:1)

如果第一个表只是为了给你第二个表中行的血型计数,我建议你重新考虑数据库设计。您只需要血型的“维度”表(单列,八行,显示血型的名称)。此列应为主键。然后/z/...中的tipo-sangre应该有一个外键约束,引用此血型表。最后,对于计数,您不需要表,您需要一个视图。基于这样的查询:

donate

不要创建单独的表来存储这些计数;因为你会有多余的数据,这些数据在某些情况下可能会因为各种原因而自相矛盾,这只会导致将来出现问题。

相关问题