"employee" table has E_ID, E_Name, E_Address, E_Mail, E_Dept. [E_ID is primary key]
"salary" table has E_ID, S_Amount, S_Date columns.
假设E_ID为4001且为11月。我只能将11月份的工资插入4001 E_ID。但我想插入12月,1月,2月。将所有月份的工资分成一个E_ID,并且还要查看每个月的工资。任何帮助将不胜感激。
答案 0 :(得分:2)
在薪资表格中,添加一个新列,说“' id'将其设置为整数,主键,自动增量。
不要将E_ID作为Salary表中的主列。由于您已将其定义为主键,因此您只能插入一次。主键是唯一的密钥表,不会重复。
您可以使用此脚本
CREATE TABLE IF NOT EXISTS `salary` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`E_ID` int(11) NOT NULL,
`S_Amount` decimal(10,2) NOT NULL,
`S_Date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
这里S_Amount列是Decimal类型,因为它用于存储工资。你也可以使用整数
答案 1 :(得分:0)
从salary.E_ID
删除主键。主键要求该列中的每个值都是唯一的 - 这就是为什么您只能为特定员工输入一行的原因。我想你可以为列E_ID
和S_Date
添加一个唯一的密钥,因为每个员工每月可能只有一个条目。
这里要在表格中插入多行,
INSERT INTO salary (E_ID, S_Amount, S_Date)
VALUES
(4001, 250.00, "2016-09"),
(4001, 235.00, "2016-10"),
(4001, 280.00, "2016-11")
我已经对这个例子做了一些补充,但它应该解释原则。
答案 2 :(得分:0)
确保名为" salary"的表格没有E_ID作为主键。它可以使您输入具有相同E_ID的同一员工的许多薪水条目。
而是将E_ID列在" salary"表作为外键,以便您可以检查特定员工的每个月工资。