BEFORE INSERT触发器中INSERT的缺失列的值是什么?
问题描述:
下表BEFORE INSERT触发器中INSERT的缺失列的值是什么?
CREATE TABLE position (x INTEGER, y INTEGER, z INTEGER);
现在考虑下面的查询
INSERT INTO position (x, y) VALUES (1, 2);
问题:–什么是z
一个BEFORE INSERT
触发此查询里面的价值?
答
快速演示:z的值将是NULL
:
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 。
更多信息。你应该注意AUTO_INCREMENT
:
在BEFORE触发器,对于AUTO_INCREMENT列的新值是0, 实际上没有插入新 行时自动生成的序列号。
+0
仅供参考:我不得不在列中添加'DEFAULT NULL',现在让我认为我的问题很愚蠢。 –
z将有'NULL' – lad2025
@ lad2025是否有保证?如果你可以请给我一个链接到一个文件,这是详细解释我会很感激。 –