所以我有两个表,员工和登录:添加到两个表,可以外键不添加到第二个表
CREATE TABLE [dbo].[Employee] (
[EmpID] INT IDENTITY (1, 1) NOT NULL,
[ManagerID] INT NULL,
[EmpName] VARCHAR (50) NOT NULL,
[EmpRank] VARCHAR (50) NOT NULL,
[EmpDateOfBirth] DATE NOT NULL,
[EmpAddress] VARCHAR (100) NOT NULL,
[DeptID] INT NOT NULL,
[EmpSalary] INT DEFAULT ((0)) NOT NULL,
[EmpGender] VARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([EmpID] ASC),
CONSTRAINT [FK_Employee_Department] FOREIGN KEY ([DeptID]) REFERENCES [dbo].[Department] ([DeptID])
和
CREATE TABLE [dbo].[Login] (
[Username] VARCHAR (50) NOT NULL,
[Password] VARCHAR (50) NOT NULL,
[EmpID] INT NOT NULL IDENTITY,
PRIMARY KEY CLUSTERED ([Username] ASC),
CONSTRAINT [FK_Login_Employee] FOREIGN KEY ([EmpID]) REFERENCES [dbo].[Employee] ([EmpID])
所以我有一个页面表单创建一个新员工,它将信息添加到员工和登录表中。使用Employee表可以正常工作,但是使用Login表时,我在Visual Studio中得到一个异常,因为EmpID'不能为null',尽管在Employee表中它也被设置为Identity。即使未设置为Identity,也会发生异常。所以我想知道我可以做什么,这样我可以添加一个新的员工,同时保持两个表中的新记录相同的EmpID。
这是C#代码添加新的信息是这样的:
SqlCommand sqlc = new SqlCommand("Insert into Employee(EmpName, EmpRank, EmpDateOfBirth, EmpGender, DeptID, EmpSalary, EmpAddress) values (@EmpName, @EmpRank, @EmpDateOfBirth, @EmpGender, @DeptID, @EmpSalary, @EmpAddress)", connect);
sqlc.Parameters.AddWithValue("@EmpName", TextBoxName.Text);
sqlc.Parameters.AddWithValue("@EmpRank", DropDownListRank.Text);
sqlc.Parameters.AddWithValue("@EmpDateOfBirth", TextBoxDateOfBirth.Text);
sqlc.Parameters.AddWithValue("@EmpGender", DropDownListGender.Text);
sqlc.Parameters.AddWithValue("@DeptID", DropDownListDepartment.Text);
sqlc.Parameters.AddWithValue("@EmpSalary", TextBoxSalary.Text);
sqlc.Parameters.AddWithValue("@EmpAddress", TextBoxAddress.Text);
SqlCommand sqlc2 = new SqlCommand("Insert into Login(Username, Password) values (@Username, @Password)", connect);
sqlc2.Parameters.AddWithValue("@Username", TextBoxUsername.Text);
sqlc2.Parameters.AddWithValue("@Password", TextBoxPassword.Text);
connect.Open();
sqlc.ExecuteNonQuery();
sqlc2.ExecuteNonQuery();
connect.Close();
任何帮助将不胜感激。
如果你'Login'表引用'Employee.EmpID',那么你的' Login.EmpID' **不能**为'IDENTITY'专栏!您需要手动**为'EmpID'提供一个有效值**到与'Employee.EmpID'匹配的'Login'表。 –
@marc_s是对的。更好的是,你应该选择Employee表中创建的新员工的EmpId,并在向Login表中添加详细信息时也提交此值。 – Deepshikha