您好,我正在尝试在 Joomla 组件安装中创建触发器,但它似乎不起作用
错误消息
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 4 SQL=CREATE TRIGGER
tg_jws_worksheet_worksheet_insert
BEFORE INSERT ONjws_worksheet_worksheet
FOR EACH ROW BEGIN INSERT INTOjws_worksheet_worksheet_seq
(id
) VALUES (NULL);
这是代码
--
-- Table structure for table `client`
--
DROP TABLE IF EXISTS `#__worksheet_client`;
CREATE TABLE IF NOT EXISTS `#__worksheet_client` (
`ClientID` int(11) NOT NULL,
`CompanyId` int(11) NOT NULL,
`FullName` text NOT NULL,
`Email` text,
`ContactNo` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `company`
--
DROP TABLE IF EXISTS `#__worksheet_company`;
CREATE TABLE IF NOT EXISTS `#__worksheet_company` (
`CompanyId` int(5) NOT NULL,
`ABN` int(12) NOT NULL,
`CompanyName` text NOT NULL,
`Street` text,
`City` text,
`State` text,
`PostCode` int(5) DEFAULT NULL,
`Country` text,
`Phone` text,
`HourRate` int(11) NOT NULL,
`Notes` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `worksheet_seq`
--
DROP TABLE IF EXISTS `#__worksheet_worksheet_seq`;
CREATE TABLE IF NOT EXISTS `#__worksheet_worksheet_seq` (
`id` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `worksheet`
--
DROP TABLE IF EXISTS `#__worksheet_worksheet`;
CREATE TABLE IF NOT EXISTS `#__worksheet_worksheet` (
`worksheetNo` varchar(9) NOT NULL,
`CompanyId` int(5) NOT NULL,
`UserId` int(5) NOT NULL,
`CompanyName` text NOT NULL,
`Category` varchar(20) NOT NULL,
`JobTitle` text NOT NULL,
`JobDesc` text NOT NULL,
`StartDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`EndDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`TimeSpd` int(11) NOT NULL,
`Tech` text NOT NULL,
`Status` varchar(8) NOT NULL,
`Hardware` text,
`Price` int(11) NOT NULL,
`file` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
SET FOREIGN_KEY_CHECKS=1;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `client`
--
ALTER TABLE `#__worksheet_client`
ADD PRIMARY KEY (`ClientID`), ADD KEY `CompanyId` (`CompanyId`);
--
-- Indexes for table `company`
--
ALTER TABLE `#__worksheet_company`
ADD PRIMARY KEY (`CompanyId`);
--
-- Indexes for table `worksheet`
--
ALTER TABLE `#__worksheet_worksheet`
ADD PRIMARY KEY (`worksheetNo`), ADD KEY `CompanyId` (`CompanyId`);
--
-- Indexes for table `worksheet_seq`
--
ALTER TABLE `#__worksheet_worksheet_seq`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `client`
--
ALTER TABLE `#__worksheet_client`
MODIFY `ClientID` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `company`
--
ALTER TABLE `#__worksheet_company`
MODIFY `CompanyId` int(5) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT for table `worksheet_seq`
--
ALTER TABLE `#__worksheet_worksheet_seq`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- Constraints for dumped tables
--
--
-- Constraints for table `client`
--
ALTER TABLE `#__worksheet_client`
ADD CONSTRAINT `client_ibfk_1` FOREIGN KEY (`CompanyId`) REFERENCES `#__worksheet_company` (`CompanyId`);
--
-- Constraints for table `worksheet`
--
ALTER TABLE `#__worksheet_worksheet`
ADD CONSTRAINT `worksheet_ibfk_1` FOREIGN KEY (`CompanyId`) REFERENCES `#__worksheet_company` (`CompanyId`);
--
-- Triggers `worksheet`
--
DROP TRIGGER IF EXISTS `tg_#__worksheet_worksheet_insert`;
CREATE TRIGGER `tg_#__worksheet_worksheet_insert` BEFORE INSERT ON `#__worksheet_worksheet`
FOR EACH ROW
BEGIN
INSERT INTO `#__worksheet_worksheet_seq` (`id`) VALUES (NULL);
SET NEW.worksheetNo = CONCAT('WS-', LPAD(LAST_INSERT_ID(), 5, '0'));
END
最佳答案
创建触发器
通常需要重新定义分隔符:
DELIMITER $$
DROP TRIGGER IF EXISTS `tg_#__worksheet_worksheet_insert`$$
CREATE TRIGGER `tg_#__worksheet_worksheet_insert` BEFORE INSERT ON `#__worksheet_worksheet`
FOR EACH ROW
BEGIN
INSERT INTO `#__worksheet_worksheet_seq` (`id`) VALUES (NULL);
SET NEW.worksheetNo = CONCAT('WS-', LPAD(LAST_INSERT_ID(), 5, '0'));
END$$
DELIMITER ;
关于mysql - SQL #1064 - 您的 SQL 语法有错误; Joomla 组件安装中的 `` 附近,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29246421/