سؤال

هنا هو الإجراء:

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top