Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 插入视图时的默认值_Mysql_Views - Fatal编程技术网

Mysql 插入视图时的默认值

Mysql 插入视图时的默认值,mysql,views,Mysql,Views,我有以下观点[加拿大用户]: SELECT id, name, email FROM users WHERE country_id = 3; 它可以很好地用于选择数据。我想知道的是,如何使插入视图的数据默认为country\u id=3 例如,当我现在插入视图时,country\u id为NULL INSERT INTO canadian_users (name, email) VALUES ("bob", "foo@bar.com"); => name: bob email:

我有以下观点[加拿大用户]:

SELECT id, name, email
FROM users
WHERE country_id = 3;
它可以很好地用于选择数据。我想知道的是,如何使插入视图的数据默认为
country\u id=3

例如,当我现在插入视图时,
country\u id
NULL

INSERT INTO canadian_users (name, email) VALUES ("bob", "foo@bar.com");
=> 
  name: bob
  email: foo@bar.com
  country_id: NULL
有没有办法让
country\u id
默认为
3

INSERT INTO canadian_users (name, email) VALUES ("bob", "foo@bar.com");
=> 
  name: bob
  email: foo@bar.com
  country_id: 3
我不想在
users
表中将列的默认值设置为3。也会有类似的观点


另外,我的整个情况被删节成了一个简洁的问题。是的,视图是必需的,而且我不可能在我的
INSERT
语句中实际设置
country\u id

我认为这是不可能的。我能想到的唯一替代方法是调用存储过程/函数,而不是
INSERT
语句。比如:

CREATE PROCEDURE insert_canadian_user( name VARCHAR(20), email VARCHAR(20) )
BEGIN
    INSERT INTO users
    VALUE (name, email, country_id);
END

但是,我很难相信您不能将
国家id
添加到您的
插入声明中。我设想您的应用程序有一个例程,基本上选择要访问的视图,大概是基于用户的国家(例如,用户登录时)。然后你可以将相应的
国家id
存储在一起。

我刚刚在某处发现了另一个类似的问题