这是我的程序:
PROCEDURE add_values
AS
BEGIN
INSERT INTO TABLE_A ...
SELECT t.id, t.name FROM TABLE_C ("This selection will return multiple records")
END
当它在TableA中插入时,我想插入到另一个表(TableB)中,插入在tableA中插入的特定记录。
TableA和TableB中的列是不同的。在插入TableB之前调用函数是明智的 - 我想根据tableA中插入的id执行某些获取和设置吗?
答案 0 :(得分:1)
试试这个
<强>输入强>
declare @tblA table (id int,name varchar(20))
declare @tblB table (id int,name varchar(20))
declare @tblC table (id int identity,name varchar(20))
insert into @tblC
select 'name1' union all select 'name2' union all
select 'name3' union all select 'name4' union all
select 'name5' union all select 'name6' union all
select 'name7' union all select 'name8' union all
select 'name9' union all select 'name10' union all
select 'name11' union all select 'name12' union all
select 'name13' union all select 'name14' union all
select 'name15' union all select 'name16' union all
select 'name17' union all select 'name18' union all
select 'name19' union all select 'name20'
<强>查询强>
insert @tblA
output INSERTED.id, INSERTED.Name
into @tblB
select
id,name
from @tblC
where id % 2 = 0
select * from @tblA
select * from @tblB
输出 [对于表格A&amp; B]
id name
2 name2
4 name4
6 name6
8 name8
10 name10
12 name12
14 name14
16 name16
18 name18
20 name20
基本上我将这些记录从TableC中插入TableA,其ID是偶数。然后使用Output子句将TableA中的值插入TableB
了解更多信息OUTPUT Clause
希望这是有道理的
答案 1 :(得分:0)
在MySQL中尝试INSERT..SELECT
,如下所示:
INSERT INTO tableB SELECT * FROM tableA where id = LAST_INSERT_ID();
http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-select-into-table.html
答案 2 :(得分:0)
答案 3 :(得分:0)
最佳技术取决于表定义和关联查询的详细信息。根据您问题中的信息,可能是这样的:
CREATE PROCEDURE add_values
AS
BEGIN
BEGIN TRANS
INSERT INTO TableA
SELECT id, name FROM TableC
INSERT INTO TableB
SELECT id, name FROM TableC
COMMIT
END