插入视图时的默认值

时间:2013-04-16 20:22:35

标签: mysql views

我有以下观点[canadian_users]:

SELECT id, name, email
FROM users
WHERE country_id = 3;

它适用于选择数据。我想知道的是,我如何制作数据我将插入视图默认为country_id = 3

例如,当我现在插入视图时,country_idNULL

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

1 个答案:

答案 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