我正在尝试为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
答案 0 :(得分:2)
您可以使用交易。它与写作不一样,但我认为这正是你所寻找的。 p>
因此,在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可以用于这种情况。