进行plsql比较

进行plsql比较,sql,plsql,oracle11g,Sql,Plsql,Oracle11g,我是sql新手,需要一些帮助 我有一个名为TREATMENT的表,它有两个字段: T_ID(主键) 你的名字 其中一些治疗方法不应与其他治疗方法一起使用。例如如果T_ID='T001'与T_ID='T002'一起使用,将导致严重的头痛。我想为他们中的一些人做这件事 因此,我需要PL/SQL从用户那里获取一个值,该值是T_ID,程序将输出冲突处理 提前谢谢 这是我的桌子: DROP TABLE TREATMENT CASCADE CONSTRAINTS; CREATE TABLE TREATM

我是sql新手,需要一些帮助

我有一个名为TREATMENT的表,它有两个字段:

  • T_ID(主键)
  • 你的名字
其中一些治疗方法不应与其他治疗方法一起使用。例如如果T_ID='T001'与T_ID='T002'一起使用,将导致严重的头痛。我想为他们中的一些人做这件事

因此,我需要PL/SQL从用户那里获取一个值,该值是T_ID,程序将输出冲突处理

提前谢谢

这是我的桌子:

DROP TABLE TREATMENT CASCADE CONSTRAINTS;
CREATE TABLE TREATMENT(
T_ID VARCHAR2(5) PRIMARY KEY NOT NULL,
T_NAME VARCHAR2(15));

INSERT INTO TREATMENT VALUES
('T001','ACCUPUNCTURE');

INSERT INTO TREATMENT VALUES
('T002','MASSAGE');

INSERT INTO TREATMENT VALUES
('T003','SKIN CARE');

INSERT INTO TREATMENT VALUES
('T004','OSTEOPATHY');

INSERT INTO TREATMENT VALUES
('T005','HOMOEOPATHY');

INSERT INTO TREATMENT VALUES
('T006','PHYSIOTHERAPY');

INSERT INTO TREATMENT VALUES
('T007','PSYCHOLOGY');

INSERT INTO TREATMENT VALUES
('T008','DEMATOLOGY');

INSERT INTO TREATMENT VALUES
('T009','YOGA');

commit;

例如,我想限制“瑜伽”和“皮肤病学”的结合,因为它们会产生副作用,如。用户输入T009和系统回复。。。瑜伽不应该与皮肤病学一起服用。会引起头痛

这是一个数据建模问题。你需要另一张桌子来容纳被禁止的组合。例如

create table contraindication
   ( treatment1 VARCHAR2(5) 
     , treatment2 VARCHAR2(5)
     , primary key ci_pk (treatment1, treatment2) );

insert into contraindication values ('T008', 'T009');
您的程序应该查阅此表

您可能会发现插入这两种排列很有帮助,因为这将使查询更简单(如果列表变大,则效率更高):


请编辑您的问题并提供示例数据和所需输出。我正在删除MySQL标记。听起来您需要表列上的规则或约束@OurManInBananas有意义,但我不知道如何让它只使用约束和规则输出消息,这就是为什么我试图制作一个plspql来实现这一点。您显示的是一个具有可能值的列表表。您需要的逻辑应该与表格相关联,在表格中,您将这些列表值与客户编号和协议日期结合使用。在该表上,您可以放置一个触发器来检查每个新插入(如果它包含非法组合)。
insert into contraindication values ('T009', 'T008');