我有这两张桌子......
表1:
IDPlayer int
表2:
ID_event int (Autoincrement - probably bad)
IDPlayer2 int
participate bit
我有这个命令,但我不知道,我怎么做1次插入是1个事件......
Insert into Table2 (ID_IDPlayer2)
Select Table1.IDPlayer
FROM Table1
输出:
event player participate
1 1 False
2 2 False
3 3 False
4 4 False
5 1 False
6 2 False
7 3 False
8 4 False
但我想要这个:
event player participate
1 1 False
1 2 False
1 3 False
1 4 False
2 1 False
2 2 False
2 3 False
2 4 False
答案 0 :(得分:0)
如果您使用的是SQL Server,
您可以继续使用自动增量,但您可能希望为“事件”列启用身份插入:
SET IDENTITY_INSERT Table2 ON;
之后,您可以将玩家插入表2中以获取特定事件。 下一句话将所有玩家插入事件1:
Insert into Table2 (ID_event , ID_IDPlayer2)
Select 1, Table1.IDPlayer
FROM Table1
尽管如此,我不会为此使用自动增量。我认为你应该保留第二个表来存储事件(EventsTable),如果你想要保留自动增量,并使Table2.ID_Event成为EventsTable.ID的引用(作为外键);
基于您的要求的解决方案是使用触发器。例如:
CREATE TABLE Events (id INT); #Events table
CREATE TABLE Table2 (ID_event INT, IDPlayer2 INT); #Events and player relation table
CREATE TABLE Table1 (IDPlayer2 INT); #Players table
INSERT INTO Table1 VALUES (1);
INSERT INTO Table1 VALUES (2);
INSERT INTO Table1 VALUES (3);
INSERT INTO Table1 VALUES (4);
CREATE TRIGGER NewEvent ON Events AFTER INSERT AS
BEGIN
INSERT INTO Table2 SELECT inserted.id, IDPlayer2 FROM Table1, inserted;
END
INSERT INTO Events VALUES (1001);
INSERT INTO Events VALUES (1002);
SELECT * FROM Table2;