MYSQL中插入sql语句出现大问题

有一个表 art 有两个字段 一个是ID 一个是content,ID是自动编号 前面的ID是19 插入新的记录id肯定是20但是我要如何才能让centent的内容变成my id is 20(意思就是 当ID为999的时候 centent的内容变成my id is 999),插入新纪录的SQL如何写啊insert into art(centent) values (????),或者是如何才能够实现啊
我觉得有2个思路一个是先insert一个空记录,然后updata让content的值等于ID,再updata,把content为my id is 999一个是用存储过程 先用SELECT MAX(`id`+0) id FROM `art` 等方法获取到当前数据库最大的ID,,然后加1,然后直接赋值,但是我不会存储过程art表结构id content1023 my id is 10231024 my id is 10241025 my id is 1025

此语句是用在火车头采集器

你创建一个存储过程,在存储过程里面写语句:
update art
set content = 'my id is '+id
就可以了,需要时执行存储过程,或者定期执行。
用触发器也可以,在表有更新添加时执行上面语句。

一般来说,你的表结构应该还需要一个标志字段,如up,当up不等于1时需要更新content,当up等于1时不需要更新content,这样在数据大的时候能保证效率,up的赋值可以在前台做。语句:
update art
set content = 'my id is '+id
,up = 1
where up <> 1追问

这个语句是用在火车头采集器,希望能得到更进一步的支持


追答

试试
update art
set content = 'my id is '+convert(id,varchar)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-26
先执行insert

然后执行

update art set content=concat('my id is ',cast(id as char)) where id=@@identity

字符串+字符串是sqlserver的写法,mysql拼接字符串要用concat函数

@@identity 就是你当前进程最后插入的主键id

注意,如果不加where条件就是更新全部数据,如果数据量大的话,业务部门会找你拼命。
第2个回答  2013-09-26
插入后增加一句话就可以了
update art set content=@@IDENTITY where id=@@IDENTITY
第3个回答  2013-09-26
好难,要是oracle,估计好实现点啊。
楼上的答案不错,可以试试啊