SQL 触发器 - 如何从一个 table 的插入数据中获取自动增量值,插入另一个?

SQL triggers - how to get auto incremented value from inserted data of one table, inserted into another?

我有两个 tables“市场”和“统计”。我有一个插入到市场的触发器,它获取这些新数据并将其插入到统计数据中,如下所示:

CREATE TRIGGER `marketplace_to_stats`
BEFORE INSERT ON `marketplace`
FOR EACH ROW
INSERT INTO
stats (stats.studentID, stats.listingID, stats.listingName, stats.date, stats.percent, stats.listingViews, stats.listingWatching, stats.listingSales) 
VALUES(NEW.studentID, NEW.listingID, NEW.listingName, curdate(), 0, 0, 0, 0)

但是,市场 table 中的 listingID 是自动递增的,我使用的插入语句将该列排除在外。因此,我的触发器不会从市场 table 收集自动增量值,而是每次都插入 0。

我如何更改此触发语句以收集并插入到统计信息 table,市场上生成的自动增量值 table?

表格:

--
-- Table structure for table `marketplace`
--

CREATE TABLE `marketplace` (
  `listingID` int(11) NOT NULL,
  `studentID` int(11) NOT NULL,
  `listingName` tinytext NOT NULL,
  `fileName` tinytext NOT NULL,
  `listingBio` varchar(1500) NOT NULL,
  `listingPrice` decimal(5,2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Table structure for table `stats`
--

CREATE TABLE `stats` (
  `studentID` int(11) NOT NULL,
  `listingID` int(11) NOT NULL,
  `date` date NOT NULL,
  `listingName` tinytext NOT NULL,
  `percent` decimal(5,2) NOT NULL,
  `listingViews` int(11) NOT NULL,
  `listingWatching` int(11) NOT NULL,
  `listingSales` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

如果您想要自动生成列,请使用 after insert 触发器:

CREATE TRIGGER `marketplace_to_stats`
AFTER INSERT ON `marketplace`
FOR EACH ROW
BEGIN
INSERT INTO stats (studentID, listingID, listingName, date, percent, listingViews, listingWatching, listingSales) 
    VALUES (NEW.studentID, NEW.listingID, NEW.listingName, curdate(), 0, 0, 0, 0);
END;

尽管 MySQL 允许对 insert 中的列进行限定,但我发现这是不必要的(并且与其他数据库不兼容)。