如何在sql server 2012中一次插入三个表

时间:2014-02-21 16:54:35

标签: c# sql sql-server

我正在尝试为BSc做最后的项目,因为我正在尝试在C#和sql server2012中建立一个健身房管理系统。我有桌子

(instructors,salary,members(students), fees, schedules)

虽然新成员的注册我希望一次插入3个表(成员,费用,时间表),但我不知道该怎么做,我真的希望你们的帮助显示出一个简单的出路。<登记/> 我应该写什么查询一次插入所有三个表。 这个URL是我的C#表格的图片,请检查。

http://s502.photobucket.com/user/ajmalajmal/media/membersdesign_zps83fd57c5.png.html?filters [用户] = 139364694&安培;过滤器[最近] = 1&安培;排序= 1&安培;○= 1

这些是我在sql server中的表格

http://s502.photobucket.com/user/ajmalajmal/media/tablessssssssssssss_zps14a56a9d.png.html?filters [用户] = 139364694&安培;过滤器[最近] = 1&安培;排序= 1&安培; O = 0

4 个答案:

答案 0 :(得分:2)

您可以使用交易。它与写作不一样,但我认为这正是你所寻找的。

因此,在SaveButton_Click事件处理程序中执行:

BEGIN TRANSACTION

INSERT INTO members
(id, firstname, etc.)
VALUES (tbMemberID.text, tbFirstName.text, etc)

INSERT INTO fees
(id, amount, etc.)
VALUES (tbFeeID.text, tbAmount.text, etc)

INSERT INTO schedule
(id, session)
VALUES (tbScheduleID.text, tbSession.text)

COMMIT TRANSACTION
GO

答案 1 :(得分:1)

您可以创建查看合并这三个表中的数据 然后使用而不是触发器通过一个插入语句将数据插入到这些表中。

创建三个表格

CREATE TABLE TableA(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldA] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableB(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldB] [nvarchar](50) NULL,
CONSTRAINT [PK_TableB] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableC(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldC] [nchar](10) NOT NULL,
CONSTRAINT [PK_TableC] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

创建视图

CREATE VIEW ThreeTablesView 
AS SELECT dbo.TableA.FieldA, dbo.TableB.FieldB, dbo.TableC.FieldC
FROM dbo.TableA
INNER JOIN dbo.TableB ON dbo.TableA.PrimaryKey = dbo.TableB.PrimaryKey
INNER JOIN dbo.TableC ON dbo.TableA.PrimaryKey = dbo.TableC.PrimaryKey

创建而不是触发器

CREATE TRIGGER ThreeTablesView_InsertTrigger
ON [dbo].[ThreeTablesView]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO TableA (FieldA) SELECT i.FieldA FROM INSERTED i;
INSERT INTO TableB (FieldB) SELECT i.FieldB FROM INSERTED i;
INSERT INTO TableC (FieldC) SELECT i.FieldC FROM INSERTED i;
END

使用单个插入语句

将数据插入三个表中
insert into ThreeTablesView (FieldA, FieldB, FieldC) values (N'aa', N'bb', N'cc');

答案 2 :(得分:0)

据我所知,只有在Oracle中,您才能在同一查询中插入多个表。我不认为你可以在SQL Server中这样做。

答案 3 :(得分:0)

虽然我不建议但是Triggers可以用于这种情况。