【发布时间】:2023-03-20 05:19:01
【问题描述】:
我正在使用 OpenOffice Base 和一些自制的 sql 创建一个数据库。尝试引用数字和可能字母的外键时会出现问题。我想强制我正在检查键的表强制插入为大写(或小写,我不挑剔)并对正在检查的表执行相同的操作。表格:
DROP TABLE IF EXISTS Gun;
DROP TABLE IF EXISTS Model;
DROP TABLE IF EXISTS Value;
CREATE TABLE Model (
"Model Name" VARCHAR (25) NOT NULL PRIMARY KEY,
"Manufacuture" VARCHAR (15) NOT NULL,
"Manufactured Start Year" INTEGER NOT NULL,
"Manufactured End Year" INTEGER,
"Gun Type" VARCHAR (10),
"Value Mininum" DECIMAL (10, 2),
"Value Maximum" DECIMAL (10, 2) NOT NULL,
"Description" VARCHAR (500)
);
CREATE TABLE Gun (
"Serial Number" VARCHAR (25) NOT NULL,
"Model Name" VARCHAR (25),
"Caliber" VARCHAR (10),
"Unique Features" VARCHAR (200),
"Manufactured Date" INTEGER,
"Condition" INTEGER,
CONSTRAINT FK_MODEL FOREIGN KEY ("Model Name") REFERENCES Model ("Model Name"),
CONSTRAINT PK_GUN_KEY PRIMARY KEY ("Serial Number", "Model Name"),
CONSTRAINT CK_CONDITION CHECK( "Condition" <= 100 )
);
触发器(不起作用,是我尝试过的众多触发器之一):
CREATE TRIGGER ForceUpper BEFORE INSERT ON Model
SET Model."Model Name" = UPPER(Model."Model Name");
这给出了:
Unexpected end of command: SET in statement
任何关于我做错了什么的提示都会很好。我查看的 HyperSQL 文档除了添加 BEGIN ATOMIC 之外没有什么帮助,它也有意外的命令结束(即使是 END)。谢谢
【问题讨论】:
-
我认为你错过了
for each row...查看下面的答案
标签: sql openoffice.org openoffice-base