gpt4 book ai didi

MySQL常量表

转载 作者:行者123 更新时间:2023-11-29 06:49:34 24 4
gpt4 key购买 nike

如何在 mysql 中创建一个常量表,它将匹配一个类型(使用 int 来区分不同的类型)和类型的全名。常量表应该是只读的,预计永远不需要更改或更新只读。

CREATE TABLE Accounts (
AccountType INT,
...
);

CREATE TABLE AccountTypes (
TypeId INT,
TypeName VARCHAR(255),
);

在 Java 中有 ImmutableMap<Integer><String> (在 Guava 中),或带有整数实例变量的枚举,在 C++ 中也有枚举或 static const string[...] ... = { ... }其中整数类型是索引。

这可能吗,还是有更好的选择?

最佳答案

看起来你需要类似这样的东西:

CREATE TABLE AccountType (
TypeId INT PRIMARY KEY,
TypeName VARCHAR(255),
TypeShortName VARCHAR(255)
);

INSERT INTO AccountType VALUES
(1, 'Foo', 'F'),
(2, 'Bar', 'Br'),
(3, 'Baz', 'Bz');

CREATE TRIGGER AccountTypeInsertTrigger BEFORE INSERT ON AccountType FOR EACH ROW
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot INSERT - the AccountType table is read-only.';

CREATE TRIGGER AccountTypeUpdateTrigger BEFORE UPDATE ON AccountType FOR EACH ROW
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot UPDATE - the AccountType table is read-only.';

CREATE TRIGGER AccountTypeDeleteTrigger BEFORE DELETE ON AccountType FOR EACH ROW
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot DELETE - the AccountType table is read-only.';

本质上,您只需定义一个普通表并用数据填充它,然后使用触发器来禁止任何更改。

根据 MySQL documentation : 要发出通用 SQLSTATE 值的信号,请使用“45000”,这表示“未处理的用户定义的异常”。


或者,REVOKE来自适当用户的除 SELECT 之外的所有权限。

关于MySQL常量表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com