我正在尝试创建一个具有自动分配(非硬)主键(Department_ID)的表。但是,赋值将基于另一列(Department_Name)中的现有值。因此,例如,如果是department_name工资单,则department_ID将为1。如果我尝试插入并且必须添加另一个工资单员工,则不会自动增加。它会为它赋值1。我假设我正在寻找它的约束,但不知道我是在看这个错误还是如何写它。这是我到目前为止所做的:
CREATE TABLE tblDepartment
(
Department_ID int NOT NULL IDENTITY,
Department_Name varchar(255) NOT NULL,
Division_Name varchar(255) NOT NULL,
City varchar(255) default 'sometown' NOT NULL,
Building int default 1 NOT NULL,
Phone varchar(255) NOT NULL,
PRIMARY KEY (Department_ID)NOT NULL,
Check (Building >=1 AND Building <= 10 )
)
CREATE TABLE tblEmployee
(
Employee_ID int NOT NULL IDENTITY,
Department_ID int ,
Employee_Name varchar(255),
Social_Security_Number varchar(255),
Work_Phone varchar(255),
Position varchar(255),
Hire_Date datetime,
Birth_Date datetime,
FOREIGN KEY (Department_ID) REFERENCES tblDepartment(Department_ID)
)
感谢您的帮助!
答案 0 :(得分:1)
您不应该为每位员工提供部门记录。每个部门只有一个部门记录。插入Employee记录时,您将从相应的Department记录中将Department.Department_ID值插入Employee.Department_ID字段。
Department.Department_ID的自动增量字段应该没问题。
根据您的架构,您已经有一个强制执行此约束的约束。
答案 1 :(得分:0)
插入到tblEmployee中的TRIGGER读取tblDepartment并相应地设置密钥可能是一个解决方案。
如果员工更换部门会怎样?