CREATE TABLE `employees` (
  `EmployeeID` char(6) NOT NULL,
  `Name` char(10) default NULL,
  `Education` char(4) default NULL,
  `Birthday` date default NULL,
  `Sex` char(2) default NULL,
  `workYear` tinyint(4) default NULL,
  `Address` varchar(20) default NULL,
  `PhoneNumber` char(12) default NULL,
  `DepartmentID` char(3) default NULL,
  PRIMARY KEY  (`EmployeeID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- 
-- 导出表中的数据 `employees`
-- INSERT INTO `employees` VALUES ('000001', '王林', '大专', '2015-12-09', '1', 8, '五一路32-1-508', '83355668', '2');
INSERT INTO `employees` VALUES ('010002', '李建', '本科', '1976-03-28', '1', 2, '中山路100-2', '82124612', '1');
INSERT INTO `employees` VALUES ('000013', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);CREATE TABLE `salary` (
  `EmployeeID` char(6) NOT NULL,
  `Income` float default NULL,
  `Outcome` float default NULL,
  PRIMARY KEY  (`EmployeeID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- 
-- 导出表中的数据 `salary`
-- INSERT INTO `salary` VALUES ('000001', 2100.8, 123.09);
INSERT INTO `salary` VALUES ('010008', 1524, 2445);
INSERT INTO `salary` VALUES ('000003', NULL, NULL);
create trigger my_update
after update on employees
for each row
begin
update  employees  set DepartmentID=3 where workYear>6;
end;#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5 

解决方案 »

  1.   

    应该是命令结束符的问题;
    delimiter //
    create trigger my_update
    after update on employees
    for each row
    begin
    update  employees  set DepartmentID=3 where workYear>6;
    end;
    //
    delimiter ;
      

  2.   

    delimiter//
    create trigger my_update
    after update on employees
    for each row
    begin
    update empoyees set departmentid=3
    where workyear>6;
    end;
    //
    delimiter;
      

  3.   


    create trigger my_update
    after update on employees
    for each row
    update  employees  set DepartmentID=3 where workYear>6;
      

  4.   

    不能在触发器里循环调用主表CREATE 
    TRIGGER my_update
    BEFORE UPDATE
    ON test.employees
    FOR EACH ROW
    begin
    if new.workYear=6 then
      set new.DepartmentID=3;
    end if;
    end