怎样将新插入的数据的id写入另一个表

本文介绍了一种在数据库中实现任务结转的功能,即当任务到达完成节点但未完成时,将其完成节点延后一个月,并在数据库中保留原始记录的同时新增一条延期记录。特别讨论了一级计划与二级计划之间的联动问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【简述】
table1结构:
id    计划内容    完成节点    是否完成
1       出图      2012-4-30     否
2       技术单    2012-4-30     否

table2结构:
id    f_id    计划内容    完成节点   是否完成
1      1      1-1号图     2012-4-18     否
2      1      1-2号图     2012-4-20     否
3      2      1-1技术单   2012-4-15     否

table1是一级计划,table2是二级计划,id是自动编号的
table1.id=table2.f_id
页面上显示:每一条一级计划下面是与它相关的二级计划

【功能描述】
现在有一个功能是任务的结转功能,就是当任务到节点时还没完成,就将此条任务的完成节点多加一个月,但是在数据库中还要保存原来的这条数据,就是说,当任务结转时,数据库里有两条相同的任务,只不过一条完成节点是2012-4-30,还有一条是2012-5-30。

【问题描述】
现在的问题是:当一级计划结转了后,二级计划也要跟着结转。
但是,我现在的做法不能使二级计划跟着结转。下面是我写的代码:

lid=request("id")   
sql="insert into table1(计划内容,完成节点,是否完成) select 计划内容,完成节点,是否完成 from table1 where id=cint('"&lid&"')"    '复制一条记录到数据库里
set rs=server.createobject("adodb.recordset")
rs.open sql,connstr,1,3
rs("完成节点")=time1
rs.update
newid=rs("id")  '得到复制记录的id(不知道是不是这样获得)
rs.close

sql1="insert into table2(f_id,计划内容,完成节点,是否完成) select f_id,计划内容,完成节点,是否完成 from table2 where f_id=cint('"&lid&"')"    
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,connstr,1,3
rs1("f_id")=newid
rs1("完成节点")=time2
rs1.update
rs1.close


用上面的表做例子:
问题1:当table1中的一级计划结转后,不能生成table2中的结果

table1:
id    计划内容    完成节点    是否完成
1       出图      2012-4-30     否
2       技术单    2012-4-30     否
3       出图      2012-5-30     否

table2
id    f_id    计划内容    完成节点   是否完成
1      1      1-1号图     2012-4-18     否
2      1      1-2号图     2012-4-20     否
3      2      1-1技术单   2012-4-15     否
4      3      1-1号图     2012-5-18     否
5      3      1-2号图     2012-5-20     否


问题2:如果一条一级计划下面有很多条二级计划,应该怎么办?
<think>好的,我现在要帮用户解决如何建一张并将一个数据写入进去。首先,我需要理解用户的具体需求。用户可能是在使用数据库,比如MySQL、SQL Server,或者是Excel这样的工具。不同的工具有不同的方法,但常见的是SQL语句的操作。 接下来,我应该考虑用户的使用场景。可能是他们需要备份数据,或者进行数据转换,或者将处理后的结果存储到中。这时候,使用SQL的CREATE TABLE和INSERT INTO语句应该是比较直接的方法。 然后,我需要确定用户的技术水平。如果他们熟悉SQL,直接提供语句即可;如果不熟悉,可能需要更详细的步骤解释。但根据问题本身,用户可能已经有一定的数据库操作基础,所以重点放在语法和示例上。 常见的操作步骤应该是:1. 创建结构;2. 将旧数据插入中。这里需要注意的是,的结构必须与原兼容,或者有明确的字段映射。如果用户需要完全复制结构,可以使用CREATE TABLE ... AS SELECT ... 的语句,这样更简洁。 可能用户没有提到的是,是否需要复制所有数据,还是部分数据。这时候,在示例中加入WHERE条件可以展示如何筛选数据,给用户更多灵活性。此外,提醒注意事项也很重要,比如主键、索引是否需要手动添加,或者字段类型是否一致,避免用户遇到问题。 还要考虑不同数据库系统的差异,比如MySQL和SQL Server在语法上的细微差别,但通用SQL语句通常适用。如果用户使用特定数据库,可能需要调整语法,但一般情况使用标准SQL即可。 最后,总结步骤,给出多个示例,并说明注意事项,确保用户能够根据实际情况调整代码。这样用户不仅能复制数据,还能理解如何自定义的结构和筛选条件,满足不同的需求。</think>写入一张数据的方法主要有两种方式,这里以标准SQL语法为例: 1. **复制结构+数据(快速创建)** ```sql -- 创建并直接插入数据 CREATE TABLE 名 AS SELECT * FROM 原名; ``` 2. **分步操作(更灵活)** ```sql -- 第一步:创建结构 CREATE TABLE 名 ( id INT PRIMARY KEY, 字段1 数据类型, 字段2 数据类型, ... ); -- 第二步:插入数据 INSERT INTO 名 (字段1, 字段2, ...) SELECT 对应字段1, 对应字段2, ... FROM 原名; ``` **示例场景**: 假设有员工`employees`,需要创建`new_employees`并复制数据: ```sql -- 方法一:快速复制(含数据) CREATE TABLE new_employees AS SELECT * FROM employees; -- 方法二:带条件复制 CREATE TABLE new_employees ( emp_id INT PRIMARY KEY, name VARCHAR(50), salary DECIMAL(10,2) ); INSERT INTO new_employees (emp_id, name, salary) SELECT employee_id, full_name, monthly_pay FROM employees WHERE hire_date > '2023-01-01'; ``` **注意事项**: 1. 字段顺序和数据类型必须对应 2. 主键、索引等约束需要单独添加 3. 可使用`WHERE`子句筛选需要复制的数据 4. 合并多数据时可使用`JOIN`语句 5. 大数据量时建议分批插入 不同数据库系统可能有语法扩展(如MySQL的`CREATE TABLE ... LIKE`),但以上标准SQL语法适用于大多数关系型数据库(MySQL、PostgreSQL、SQL Server等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值