我正在创建一个数据库,我有
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之外,还有什么办法吗?
事先谢谢你:)
答案 0 :(得分:1)
如果第一个表只是为了给你第二个表中行的血型计数,我建议你重新考虑数据库设计。您只需要血型的“维度”表(单列,八行,显示血型的名称)。此列应为主键。然后/z/...
中的tipo-sangre
应该有一个外键约束,引用此血型表。最后,对于计数,您不需要表,您需要一个视图。基于这样的查询:
donate
不要创建单独的表来存储这些计数;因为你会有多余的数据,这些数据在某些情况下可能会因为各种原因而自相矛盾,这只会导致将来出现问题。