插入视图时的默认值
Posted
技术标签:
【中文标题】插入视图时的默认值【英文标题】:Default values when inserting into a view 【发布时间】:2013-04-16 20:22:34 【问题描述】:我有以下观点 [canadian_users]:
SELECT id, name, email
FROM users
WHERE country_id = 3;
它适用于选择数据。我想知道的是,如何使我插入到视图的数据默认为country_id = 3
?
例如,当我现在插入视图时,country_id
是NULL
INSERT INTO canadian_users (name, email) VALUES ("bob", "foo@bar.com");
=>
name: bob
email: foo@bar.com
country_id: NULL
有没有办法让country_id
默认变为3
?
INSERT INTO canadian_users (name, email) VALUES ("bob", "foo@bar.com");
=>
name: bob
email: foo@bar.com
country_id: 3
我确实不想在users
表上将列的默认值设置为 3。会有类似的看法。
另外,我的整个情况都被截断以提出一个简洁的 SO 问题。是的,视图是必要的,而且我不太可能在我的 INSERT
语句中实际设置 country_id
。
【问题讨论】:
我也刚刚在***.com/questions/4836759/…***.com/questions/4836759/…上发现了另一个类似的问题 【参考方案1】:我认为这是不可能的。我能想到的唯一选择是调用存储过程/函数而不是INSERT
语句。比如:
CREATE PROCEDURE insert_canadian_user( name VARCHAR(20), email VARCHAR(20) )
BEGIN
INSERT INTO users
VALUE (name, email, country_id);
END
但是,我很难相信您不能将 country_id
添加到您的 INSERT
语句中。我想您的应用程序有一个例程,该例程基本上选择要访问的视图,大概基于您的用户所在的国家/地区(例如,当用户登录时)。然后你就可以把对应的country_id
一起存起来。
【讨论】:
以上是关于插入视图时的默认值的主要内容,如果未能解决你的问题,请参考以下文章