Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Insert语句因触发器而崩溃_C#_Sql - Fatal编程技术网

C# Insert语句因触发器而崩溃

C# Insert语句因触发器而崩溃,c#,sql,C#,Sql,我得到的错误是“INSERT语句与外键约束“FK_休假_用户”冲突。冲突发生在数据库“TestAtt”、表“dbo.users”、列“userID”中。” 我正试图通过以下方式向用户插入: INSERT into users (firstName, lastName, userName, password, team, fingerID, type, isActive) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}')

我得到的错误是“INSERT语句与外键约束“FK_休假_用户”冲突。冲突发生在数据库“TestAtt”、表“dbo.users”、列“userID”中。”

我正试图通过以下方式向用户插入:

INSERT into users (firstName, lastName, userName, password, team, fingerID, type, isActive) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}')",
firstNameAddBox.Text, lastNameAddBox.Text, userNameAddBox.Text, passwordAddBox.Text,
teamAddUserCombo.Text, fingerIdAddBox.Text, userTypeAddCombo.SelectedValue, isActiveCheck.Checked);
我的用户表如下所示:

CREATE TABLE
    users
    (
        userID INT NOT NULL IDENTITY,
        userName NVARCHAR(50) COLLATE Romanian_CI_AS NOT NULL,
        password NVARCHAR(100) COLLATE Romanian_CI_AS NOT NULL,
        firstName NVARCHAR(50) COLLATE Romanian_CI_AS NOT NULL,
        lastName NVARCHAR(50) COLLATE Romanian_CI_AS NOT NULL,
        team TINYINT NOT NULL,
        type TINYINT NOT NULL,
        fingerID SMALLINT NOT NULL,
        isActive BIT DEFAULT 1 NOT NULL,
        CONSTRAINT PK_users PRIMARY KEY (userID),
        CONSTRAINT FK_users_userType FOREIGN KEY (type) REFERENCES userType (typeID),
        CONSTRAINT users_idx UNIQUE (fingerID)
    );
CREATE TABLE
    vacation
    (
        ID INT NOT NULL IDENTITY,
        userID INT NOT NULL,
        vacation TINYINT DEFAULT 0 NOT NULL,
        extraDays TINYINT DEFAULT 0 NOT NULL,
        PRIMARY KEY (ID),
        CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
    );
假期表如下所示:

CREATE TABLE
    users
    (
        userID INT NOT NULL IDENTITY,
        userName NVARCHAR(50) COLLATE Romanian_CI_AS NOT NULL,
        password NVARCHAR(100) COLLATE Romanian_CI_AS NOT NULL,
        firstName NVARCHAR(50) COLLATE Romanian_CI_AS NOT NULL,
        lastName NVARCHAR(50) COLLATE Romanian_CI_AS NOT NULL,
        team TINYINT NOT NULL,
        type TINYINT NOT NULL,
        fingerID SMALLINT NOT NULL,
        isActive BIT DEFAULT 1 NOT NULL,
        CONSTRAINT PK_users PRIMARY KEY (userID),
        CONSTRAINT FK_users_userType FOREIGN KEY (type) REFERENCES userType (typeID),
        CONSTRAINT users_idx UNIQUE (fingerID)
    );
CREATE TABLE
    vacation
    (
        ID INT NOT NULL IDENTITY,
        userID INT NOT NULL,
        vacation TINYINT DEFAULT 0 NOT NULL,
        extraDays TINYINT DEFAULT 0 NOT NULL,
        PRIMARY KEY (ID),
        CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
    );
这就是触发器:

ALTER TRIGGER "dbo"."newUserTrigger"
  on "dbo"."users"
  AFTER INSERT
  as 
begin
DECLARE @newUserID int
SELECT @newUserID = (SELECT userID FROM Inserted)
INSERT INTO vacation (userID) VALUES (@newUserID)
end;

因此,如果我禁用触发器,则insert将起作用,但在触发器打开的情况下,它似乎也不会在休假表中插入userID。

我认为您的外键不正确,引用
用户的列是
userID
,而不是
ID

 CONSTRAINT FK_vacation_users FOREIGN KEY (userID) REFERENCES users (userID)
但是触发器也会被破坏,因为它可以包含多行(或不包含)行。因此,它应该是:

ALTER TRIGGER "dbo"."newUserTrigger"
  on "dbo"."users"
  AFTER INSERT
  as 
begin
INSERT INTO vacation (userID) SELECT userID from Inserted
end;

我认为您的外键不正确,引用
用户的列是
用户ID
,而不是
ID

 CONSTRAINT FK_vacation_users FOREIGN KEY (userID) REFERENCES users (userID)
但是触发器也会被破坏,因为它可以包含多行(或不包含)行。因此,它应该是:

ALTER TRIGGER "dbo"."newUserTrigger"
  on "dbo"."users"
  AFTER INSERT
  as 
begin
INSERT INTO vacation (userID) SELECT userID from Inserted
end;

我认为您的外键不正确,引用
用户的列是
用户ID
,而不是
ID

 CONSTRAINT FK_vacation_users FOREIGN KEY (userID) REFERENCES users (userID)
但是触发器也会被破坏,因为它可以包含多行(或不包含)行。因此,它应该是:

ALTER TRIGGER "dbo"."newUserTrigger"
  on "dbo"."users"
  AFTER INSERT
  as 
begin
INSERT INTO vacation (userID) SELECT userID from Inserted
end;

我认为您的外键不正确,引用
用户的列是
用户ID
,而不是
ID

 CONSTRAINT FK_vacation_users FOREIGN KEY (userID) REFERENCES users (userID)
但是触发器也会被破坏,因为它可以包含多行(或不包含)行。因此,它应该是:

ALTER TRIGGER "dbo"."newUserTrigger"
  on "dbo"."users"
  AFTER INSERT
  as 
begin
INSERT INTO vacation (userID) SELECT userID from Inserted
end;
问题是:

CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
这意味着假期中的ID列必须在users中的userId中有一个匹配的值。我认为(ID)应该是(userID)。那么它应该可以正常工作。

问题是:

CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
这意味着假期中的ID列必须在users中的userId中有一个匹配的值。我认为(ID)应该是(userID)。那么它应该可以正常工作。

问题是:

CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
这意味着假期中的ID列必须在users中的userId中有一个匹配的值。我认为(ID)应该是(userID)。那么它应该可以正常工作。

问题是:

CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
这意味着假期中的ID列必须在users中的userId中有一个匹配的值。我认为(ID)应该是(userID)。那就行了

CONSTRAINT FK_vacation_users FOREIGN KEY (ID) REFERENCES users (userID)
应该是

CONSTRAINT FK_vacation_users FOREIGN KEY (userID) REFERENCES users (ID)
应该是

CONSTRAINT FK_vacation_users FOREIGN KEY (userID) REFERENCES users (ID)
应该是

CONSTRAINT FK_vacation_users FOREIGN KEY (userID) REFERENCES users (ID)
应该是

CONSTRAINT FK_vacation_users FOREIGN KEY (userID) REFERENCES users (ID)

比我的答案更好:)@simonatrc-嗯,我们都发现了导致他们问题的“问题”。但我只是加了一个奖励,它迟早会(可能)上来咬它们。谢谢你的快速回复!这就成功了;)比我的答案更好:)@simonatrc-嗯,我们都发现了导致他们问题的“问题”。但我只是加了一个奖励,它迟早会(可能)上来咬它们。谢谢你的快速回复!这就成功了;)比我的答案更好:)@simonatrc-嗯,我们都发现了导致他们问题的“问题”。但我只是加了一个奖励,它迟早会(可能)上来咬它们。谢谢你的快速回复!这就成功了;)比我的答案更好:)@simonatrc-嗯,我们都发现了导致他们问题的“问题”。但我只是加了一个奖励,它迟早会(可能)上来咬它们。谢谢你的快速回复!这就成功了;)