2

我有以下观点 [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

我不想表格上将列的默认值设置为 3 users。会有类似的看法。

此外,我的整个情况都被截断以提出一个整洁的 SO 问题。是的,观点是必要的,而且我不太可能country_id在我的INSERT陈述中实际设置。

4

1 回答 1

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的。

于 2013-04-30T15:44:12.587 回答