PDA

View Full Version : insert into two table in one action



Silverboy
شنبه 01 بهمن 1384, 14:00 عصر
سلام دو ستان

من دو تا جدول توی sql دارم

اگر در جدول اول یک فیلد flag ست (1) باشد باید یک رکورد مرتبط با رکورد موجود در جدول اول در جدول دوم درج بشه

ایا راهی وجود داره که بشه اطلاعات دو تا جدول رو به صورت همزمان وارد کرد ؟؟؟!!!

reza_rad
شنبه 01 بهمن 1384, 14:20 عصر
یک transaction بنویس. البته بهتر store procedure هست.

Elham_gh
دوشنبه 10 بهمن 1384, 21:57 عصر
شما 2 راه حل دارید:
1- یک STored procedure بنویسید که دستورات Insert در هر 2 جدول در یک transaction داحل آن باشد.
2- در trigger مربوط به After Insert جدول اوا دستور Insert جدول دوم را قرار دهید.

MMAASS
پنج شنبه 13 بهمن 1384, 09:31 صبح
سلام
منم با Trigger موافقم
این بهتره

mehranFX
پنج شنبه 13 بهمن 1384, 09:59 صبح
یه تریگر برای INSERT, UPDATE کاملا مناسبه !!!

MMAASS
پنج شنبه 13 بهمن 1384, 11:42 صبح
و حتی Delete :چشمک:
تریگرها برای انجام سه عمل اصلی Insert , Update , Delete بکار می رن

سید مسعود موحد
پنج شنبه 13 بهمن 1384, 12:16 عصر
قابل توجه دوستان گرامی
در SQL2005 تعدادی دیگر تریگر اضافه شده است بنام DDL Triggers
من یک تایپیک برای آموزش SQL2005 گذاشتم ولی انگار کسی دوست نداره که اونو جلو ببریم و آموزش رو شروع کنیم

اینم Temp دستوراتش



USE <database_name, sysname, AdventureWorks>
GO

ALTER TRIGGER <schema_name, sysname, Sales>.<trigger_name, sysname, uStore>
ON <schema_name, sysname, Sales>.<table_name, sysname, Store>
AFTER <data_modification_statements, , UPDATE>
AS <T-SQL_statement, , UPDATE Sales.Store SET ModifiedDate = GETDATE() FROM inserted WHERE inserted.CustomerID = Sales.Store.CustomerID>
GO



و




-- ================================================
-- Template generated from Template Explorer using:
-- Create Trigger (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- See additional Create Trigger templates for more
-- examples of different Trigger statements.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name>
ON <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name>
AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for trigger here

END
GO

Elham_gh
پنج شنبه 13 بهمن 1384, 12:36 عصر
MMAASS
و حتی Delete
تریگرها برای انجام سه عمل اصلی Insert , Update , Delete بکار می رن
__________________



منظورتون چیه؟؟؟؟ !!!!!
(یکبار اسم سایت و تاپیک رو ببینین! )

Elham_gh
پنج شنبه 13 بهمن 1384, 12:39 عصر
آقای سید مسعود موحد ممنون.

شما تو کدوم تاپیک آموزش رو شروع کردین؟

AminSobati
پنج شنبه 13 بهمن 1384, 12:40 عصر
قابل توجه دوستان گرامی
در SQL2005 تعدادی دیگر تریگر اضافه شده است بنام DDL Triggers
من یک تایپیک برای آموزش SQL2005 گذاشتم ولی انگار کسی دوست نداره که اونو جلو ببریم و آموزش رو شروع کنیم

اینم Temp دستوراتش



USE <database_name, sysname, AdventureWorks>
GO

ALTER TRIGGER <schema_name, sysname, Sales>.<trigger_name, sysname, uStore>
ON <schema_name, sysname, Sales>.<table_name, sysname, Store>
AFTER <data_modification_statements, , UPDATE>
AS <T-SQL_statement, , UPDATE Sales.Store SET ModifiedDate = GETDATE() FROM inserted WHERE inserted.CustomerID = Sales.Store.CustomerID>
GO



و




-- ================================================
-- Template generated from Template Explorer using:
-- Create Trigger (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- See additional Create Trigger templates for more
-- examples of different Trigger statements.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name>
ON <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name>
AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for trigger here

END
GO


مسعود جان،
DDL Triggerها ابزار بسیار مفیدی هستند و مطمئنم وقتی برنامه نویسها با امکانات جدید SQL Server 2005 به مرور آشنا بشن، ارزش مطالب شما بیشتر آشکار بشه. ضمنا تاپیکی که گفتین کجاست؟ من ندیده بودم

MMAASS
پنج شنبه 13 بهمن 1384, 12:58 عصر
منظورتون چیه؟؟؟؟ !!!!!
(یکبار اسم سایت و تاپیک رو ببینین! )

سلام
منظورم این بود که تریگرها این سه کارو خوب می تونن انجام بدن و فقط برای Insert , Update بکار نمی رن:چشمک:
آخه mehranFX گفته بود که : "یه تریگر برای Insert , Update کاملا مناسبه" .:بامزه:

سید مسعود موحد
پنج شنبه 13 بهمن 1384, 13:01 عصر
دوستان اینجا
http://www.barnamenevis.org/forum/showthread.php?t=37186