从字符串中获取属性
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 来存储这些计数;这只会在将来造成麻烦,因为您将拥有冗余数据,这些数据在某些时候可能会出于多种原因自相矛盾。
我正在制作一个数据库并且我有
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 来存储这些计数;这只会在将来造成麻烦,因为您将拥有冗余数据,这些数据在某些时候可能会出于多种原因自相矛盾。