我使用的是postgreSQL,当我创建新用户时,我想自动将username
表中users
表中profiles
的值插入handle
中。
是否可以通过SQL语句来实现?
用于清除:
首先,我添加一个新用户:
insert into users (email, user_name, first_name, last_name, active, created_at) values ('john@doe.com', 'johndoe', 'John', 'Doe', true, '2018-03-16T17:39:54Z');
之后,我为此用户创建一个配置文件:
insert into profiles (user_id, handle, name, city) VALUES (2, 'johndoe', 'John Doe', 'Tawala');
通过此步骤,应自动将user_name
的值写入handle
表中的profiles
列,而无需手动进行。
是否有SQL函数之类的解决方案?
这是我的桌子:
CREATE TABLE IF NOT EXISTS users (
id serial UNIQUE NOT NULL,
email varchar(255) NOT NULL,
user_name varchar(255) NOT NULL,
first_name varchar(255) NOT NULL,
last_name varchar(255) NOT NULL,
active bool DEFAULT TRUE,
created_at DATE
);
CREATE TABLE IF NOT EXISTS profiles (
id serial UNIQUE NOT NULL,
user_id serial NOT NULL,
handle varchar(255) NOT NULL,
name varchar(255) NOT NULL,
city varchar(255) NULL,
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE ON
UPDATE CASCADE
);
答案 0 :(得分:1)
是的,您可以使用"github.com/lib/pq"
子句var id int
var username string
var activities []string
sqlStatement := `
SELECT
id,
username,
activities
FROM
users
WHERE
id = $1
`
stmt, err := db.Prepare(sqlStatement)
if err != nil {
// handle err
}
defer stmt.Close()
row := stmt.QueryRow(1)
err = row.Scan(
&id,
&username,
pq.Array(&activities) // used here
)
if err == sql.ErrNoRows {
// handle err
}
if err != nil {
// handle err
}
WITH