考虑下表
CREATE TABLE position (x INTEGER, y INTEGER, z INTEGER);
现在进行以下查询
INSERT INTO position (x, y) VALUES (1, 2);
问题: - 此查询的z
触发器中BEFORE INSERT
的值是多少?
答案 0 :(得分:0)
快速演示:z的值为NULL
:
的 SqlFiddleDemo
强>
CREATE TABLE position (x INTEGER, y INTEGER, z INTEGER);
CREATE TABLE position_temp (x INTEGER, y INTEGER, z INTEGER);
CREATE TRIGGER testref BEFORE INSERT ON position
FOR EACH ROW
BEGIN
INSERT INTO position_temp(x, y, z)
VALUES (NEW.x, NEW.y, NEW.z);
END;
INSERT INTO position (x, y) VALUES (1, 2);
如果表格有DEFAULT
之类的话:
CREATE TABLE position (x INTEGER, y INTEGER, z INTEGER DEFAULT 5);
你会得到z = 5.
的 SqlFiddleDemo2
强>
documentation中的更多信息。你应该注意AUTO_INCREMENT
:
在BEFORE触发器中,AUTO_INCREMENT列的NEW值为0, 不是新的时候自动生成的序列号 实际插入了行。