我有以下观点[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。对此会有类似的看法。
此外,我的整个情况都被截断,以便提出一个简洁的问题。是的,视图是必要的,而且我不太可能在我的country_id
声明中实际设置INSERT
。
答案 0 :(得分:0)
我不认为这是可能的。我能想到的唯一选择是调用存储过程/函数而不是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
。