1

我有这两张桌子...

表格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
4

1 回答 1

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;
于 2013-04-29T09:55:55.753 回答