MySQL:来自另一个表列的列的默认值

标签 mysql sql database default

假设您有一个表USER,其主键位于字段USER_ID。数据库中的每个表都应包含带有实际用户 ID 的 MODIFIED_BY 字段。我的目标是在该字段上指定默认值,该值等于具有适当名称的用户 ID。 F.E. 您有名为 system 的用户,并且您希望每个表的每条记录在 MODIFIED_BY 字段中都有该用户的 ID。您还希望所有新记录都满足这一点。

最佳答案

假设您指的是数据库用户之外的其他类型的用户(例如“注册用户”),也许触发器可以解决您的问题。通过两个触发器,一个在插入时触发,一个在更新时触发,您可以使用自定义代码指定 modified_at 列的值,例如从...中选择user_id,其中...

请检查以下示例代码,它应该直接回答您的问题;希望它能解决你的问题。否则,请向我们提供更多信息/更多背景信息。

DELIMITER |

drop table if exists sometable
|
CREATE TABLE `sometable` (
  `somecolumn` int(11) DEFAULT NULL,
  `modified_by` int(11) DEFAULT NULL
)
|
drop table if exists registered_user
|
CREATE TABLE registered_user (
  user_id integer primary key,
  name varchar(50)
)
|
drop trigger if exists sometable_inserted
|
drop trigger if exists sometable_modified
|
CREATE TRIGGER sometable_inserted BEFORE INSERT ON sometable
FOR EACH ROW
BEGIN
SET new.modified_by := (select user_id from registered_user where name=@name);
END;
|
CREATE TRIGGER sometable_modified BEFORE UPDATE ON sometable
FOR EACH ROW
BEGIN
SET new.modified_by := (select user_id from registered_user where name=@name);
END;
|

DELIMITER ;

insert into registered_user values (5, 'joe');
insert into registered_user values (6, 'sam');

set @name='sam';
insert into sometable(somecolumn) values (1);
insert into sometable(somecolumn) values (2);
set @name='joe';
update sometable set somecolumn = 3 where somecolumn = 2;

关于MySQL:来自另一个表列的列的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41102020/

相关文章:

mysql - 如何在 MySQL 中执行具有不同 ID 的计算?

django - 具有多种变体的产品

java - 如何知道 Solr Optimize 何时完成?

mysql - 我需要在同一个表中的每个日期查询多个列

sql - 无法在 PostgreSQL 中选择现有列

mysql - 通过 Rails 调用带 OUT 参数的 MySQL 存储过程

php - 通过 AJAX 进行 SQL 更新查询的语法问题

php - 如何每分钟自动检查MySQL数据库中的记录..?

php - 搜索查询在 Laravel 中不起作用

来自 2 个不同表的值出现的 Mysql 百分比