كيفية إدراج سجلات استنادا إلى سابقة إدراج?
-
06-07-2019 - |
سؤال
هنا هو الإجراء:
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?
المحلول
جرب هذا
المدخلات
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 & B]
معرف الاسم
2 name2
4 name4
6 name6
8 name8
10 name10
12 name12
14 name14
16 name16
18 name18
20 name20
أساسا أنا إدراج تلك السجلات إلى TableA من TableC التي معرف حتى.ثم باستخدام جملة إخراج إدخال القيم من TableA إلى TableB
للحصول على مزيد من المعلومات شرط الانتاج
نأمل أن يكون هذا منطقي
نصائح أخرى
ويمكنك إنشاء مشغل للقيام بذلك، إذا كان هذا هو الطريقة الوحيدة التي إدراج البيانات في الجدول. (وإلا فإنه سوف تعمل على إدراج كل)
وأو يمكنك تكرار على المؤشر والتي سوف تمكنك من فعل ذلك مع إدراج كل من اختيار
وأفضل تقنية تعتمد على تفاصيل تعريفات الجدول الخاص بك والاستفسارات المرتبطة بها. واستنادا إلى المعلومات في سؤالك، ربما شيء من هذا القبيل:
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
في الخلية محاولة INSERT..SELECT
، مثل هذا:
INSERT INTO tableB SELECT * FROM tableA where id = LAST_INSERT_ID();
HTTP: // ديف .mysql.com / وثيقة / RefMan معلومات / 5.0 / EN / ANSI-فرق-حدد حيز table.html