当用户在输入字段中提交相同值时,我希望一个值(而不是id值BTW)增加。
例如,假设该值位于db表的“ number”列中,并且每次用户提交带有let的表单时,假设在输入字段中使用“ hello”,则“ number”列中的整数值将增加一个特定值。
答案 0 :(得分:0)
此任务必须使用触发功能,因为在表中可能只有一个自动增量键
如果您使用postgres,则可以使用
create or replace function increment_version() returns trigger as $$
declare
new_version integer;
begin
select max(version) into new_version from YOU_TABLE_NAME where CONDITIONS_YOU_NEED;
new.version = new_version + 1;
return new;
create trigger increment_version after insert on YOUR_TABLE_NAME
for each row execute increment_version();
您还可以使用规则来完成此任务
create rule increment_version as on insert to YOUR_TABLE
do update YOUR_TABLE set version=versino+1 where id = new.id;
但是请注意,如果发生错误触发器,则会给您一个异常,但是规则-不是
第https://www.postgresql.org/docs/8.2/static/rules-update.html页中的规则 在pg https://www.postgresql.org/docs/9.6/static/plpgsql-trigger.html
中触发如果您使用mysql,也可以使用触发器,但是语法有些不同 https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html
create trigger version after insert on YOUR_TABLE for each row begin
begin
select max(version) into new_version from YOU_TABLE_NAME where CONDITIONS_YOU_NEED;
set new.version = new_version;
end;
答案 1 :(得分:0)
我找到了代码。这在PHP 5中。
这是代码:
if(isset($_POST["Form input"])) {
$input=$_POST["input"];
$ip = getenv("REMOTE_ADDR");
$date=date("d M Y -- H");
$qry_get="select * from `table` where col = '".$input."'";
$qry_get_run=mysql_query($qry_get);
if ($qry_get_run) {
$ret=mysql_num_rows($qry_get_run);
if ($ret==0) {
$qry_ins="INSERT INTO `table` (`col 1`, `col 2`, `col 3`) VALUES ('val1', 'val2', 'val3')";
$qry_ins_run=mysql_query($qry_ins);
if ($qry_ins_run) {
echo "success message";
}else{
echo mysql_error();
}
}else{
while ($get=mysql_fetch_assoc($qry_get_run)) {
$val2=$get['col 2'];
$id=$get['id'];
$up_val=$val2+3;
$qry = "update table_name set `col 2`='".$up_val."' where id='".$id."' ";
$qry_run=mysql_query($qry);
}
}
}
}