【发布时间】:2020-10-04 16:49:13
【问题描述】:
您好,我正在尝试在下面创建一个新行,同时更新旧行值。
我有一个名为 TestCustomer 的下表,我想将现有行状态更新为“I”,如果插入时 customer_id 匹配,则使用新的 email_Id 和状态“A”创建一个新行;
create table TestCustomer(customer_id varchar(18),emai_id varchar(18),email_stat char(1))
Insert Into TestCustomer(customer_id,emai_id,email_stat)values('223459','12345','A');
Insert Into TestCustomer(customer_id,emai_id,email_stat)values('223458','123456','I');
Insert Into TestCustomer(customer_id,emai_id,email_stat)values('223459','123457','A');
输入:
customer_id=223459 emai_id='23678'
输出:
输出
【问题讨论】:
-
通过基于值的插入语句来实现具有挑战性。为了理想地实现这一点,您应该将传入的源数据放在临时表或类似的东西中。
-
我不知道你想做什么。在您的示例数据中,customer_id 223458 发生了什么? “如果插入时客户 ID 匹配”是什么意思?匹配什么?
-
我正在为给定的客户更新一个新的 email_id,在本例中为 223459。因此与客户关联的旧 email_id 将处于非活动状态,而新的电子邮件 ID 将处于活动状态。
标签: sql oracle oracle11g oracle10g