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

时间:2016-12-12 13:30:23

标签: mysql sql database default

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

1 个答案:

答案 0 :(得分:2)

假设您指的是其他类型的用户而不是数据库用户(例如注册用户'),可能触发器是您问题的解决方案。使用两个触发器,一个在插入时触发,一个在更新时触发,您可以使用自定义代码指定select user_id from ... where ... - 列的值,例如: 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;

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

send.php