我想知道是否可以让保持同步的列与同一个表中的另一列保持同步
。让这张桌子成为一个例子:
+------+-----------+
| name | name_copy |
+------+-----------+
| John | John |
+------+-----------+
| Mary | Mary |
+------+-----------+
我想:
能够INSERT
使用仅为name
列提供值的name_copy
- name
列应自动获取我在UPDATE
<中使用的值/ p>
当name
列在预先存在的行上name_copy
列时,name_column
应自动更新以匹配新的&amp;已更新<html>
<head>
<title>U.S Election 2016</title>
</head>
<body>
<h1>U.S Election 2016 - Voting Page</h1>
<form action="insert_vote.php" method="post">
<table border="0">
<tr>
<td>Voter ID</td>
<td><input type="text" name="VoterID" maxlength="13" size="13" /></td>
</tr>
<tr>
<td>Candidate :</td>
<td>
<input type="radio" name="Candidate" value="Hillary Clinton" checked>
Hillary Clinton<br>
<input type="radio" name="Candidate" value="Donald Trump" checked>
Donald Trump<br>
<input type="radio" name="Candidate" value="Gary Johnson" checked>
Gary Johnson<br>
<input type="radio" name="Candidate" value="Jill Stein" checked>
Jill Stein<br>
<input type="radio" name="Candidate" value="None" checked>
Undecided/None of the Above<br>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Cast Vote" /></td>
</tr>
</table>
</form>
</body>
</html>
。
在Postgres中解决这个问题的安全可靠和简单方法是什么?
答案 0 :(得分:2)
不要将name_copy
放入表格中。一种方法是创建列并使用视图访问它:
create view v_table as
select t.*, name as name_copy
from t;
那就是说,我真的没有看到它的用途。
答案 1 :(得分:2)
创建trigger。简单的触发功能:
create or replace function trigger_on_example()
returns trigger language plpgsql as $$
begin
new.name_copy := new.name;
return new;
end
$$;