如何用sql语句遍历一个用户表,然后在数据表为每个用户添加一条新记录 15
用户表:USERID,USERNAME。。。。数据表:USERID,JOB、adddate。。。。想实现每天凌晨SQLSERVER自动遍历用户表,为每个用户在数据表里插入...
用户表:USERID,USERNAME。。。。
数据表:USERID,JOB、adddate。。。。
想实现每天凌晨SQLSERVER自动遍历用户表,为每个用户在数据表里插入一行记录,USERID为用户ID,adddate为当天,其它字段为空,如何实现? 展开
数据表:USERID,JOB、adddate。。。。
想实现每天凌晨SQLSERVER自动遍历用户表,为每个用户在数据表里插入一行记录,USERID为用户ID,adddate为当天,其它字段为空,如何实现? 展开
推荐于2016-03-07 · 知道合伙人软件行家
Axure夜话
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:1197
获赞数:1344
1992年毕业于太原理工大学,20年IT公司工作经验现任山西誉海和科技有限公司技术总监,老二牛车教育课程总监
向TA提问 私信TA
关注
展开全部
sql语句遍历一个用户表 涉及到循环操作 ,添加纪录就是简单的insert操作
不同的数据库的稍有不同。
还要处理数据库表主键的不同设置情况。
循环操作+添加操作的案例:(oracle)
1:主键采用自加方式实现
delete from whilestu1;
commit;
DECLARE
num1 number;
maxstuid number;
age number;
begin
num1 := 1;
WHILE num1 <= 100 LOOP
--获取最大的stuid
select max(stuid) + 1 into maxstuid from whilestu1;
--dbms_output.put_line(maxstuid);
if maxstuid is null then
maxstuid := 1;
--dbms_output.put_line('r');
end if;
age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);
--插入数据
insert into whilestu1
(stuid, stuName, age)
values
(maxstuid, '学员' || cast(maxstuid as varchar2(50)), age);
commit;
num1 := num1 + 1;
END LOOP;
end;
/
2:使用触发器声称主键的方式
CREATE OR REPLACE TRIGGER trg_whilestu2
BEFORE INSERT OR UPDATE OF stuid
ON whilestu2
FOR EACH ROW
BEGIN
IF INSERTING THEN
SELECT SEQ_whilestu2.NEXTVAL INTO :NEW.stuid FROM DUAL;
ELSE
RAISE_APPLICATION_ERROR(-20020, '不允许更新ID值!');
END IF;
END;
/
delete from whilestu2;
select * from whilestu2;
commit;
--select SEQ_whilestu2.Nextval from dual;
DECLARE
num1 number;
maxstuid number;
age number;
begin
num1 := 1;
WHILE num1 <= 100 LOOP
age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);
select SEQ_whilestu2.Currval + 1 into maxstuid from dual;
--插入数据
insert into whilestu2
(stuName, age)
values
('学员' || cast(maxstuid as varchar2(50)), age);
commit;
num1 := num1 + 1;
END LOOP;
end;
/
3:使用GUID生成主键的方式
select sys_guid() from dual;
DECLARE
num1 number;
--maxstuid number;
age number;
stuid raw(16);
begin
num1 := 1;
WHILE num1 <= 100 LOOP
age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);
select sys_guid() into stuid from dual;
--插入数据
insert into whilestu3
(stuid, stuName, age)
values
(stuid, '学员' || cast(num1 as varchar2(50)), age);
commit;
num1 := num1 + 1;
END LOOP;
end;
/
不同的数据库的稍有不同。
还要处理数据库表主键的不同设置情况。
循环操作+添加操作的案例:(oracle)
1:主键采用自加方式实现
delete from whilestu1;
commit;
DECLARE
num1 number;
maxstuid number;
age number;
begin
num1 := 1;
WHILE num1 <= 100 LOOP
--获取最大的stuid
select max(stuid) + 1 into maxstuid from whilestu1;
--dbms_output.put_line(maxstuid);
if maxstuid is null then
maxstuid := 1;
--dbms_output.put_line('r');
end if;
age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);
--插入数据
insert into whilestu1
(stuid, stuName, age)
values
(maxstuid, '学员' || cast(maxstuid as varchar2(50)), age);
commit;
num1 := num1 + 1;
END LOOP;
end;
/
2:使用触发器声称主键的方式
CREATE OR REPLACE TRIGGER trg_whilestu2
BEFORE INSERT OR UPDATE OF stuid
ON whilestu2
FOR EACH ROW
BEGIN
IF INSERTING THEN
SELECT SEQ_whilestu2.NEXTVAL INTO :NEW.stuid FROM DUAL;
ELSE
RAISE_APPLICATION_ERROR(-20020, '不允许更新ID值!');
END IF;
END;
/
delete from whilestu2;
select * from whilestu2;
commit;
--select SEQ_whilestu2.Nextval from dual;
DECLARE
num1 number;
maxstuid number;
age number;
begin
num1 := 1;
WHILE num1 <= 100 LOOP
age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);
select SEQ_whilestu2.Currval + 1 into maxstuid from dual;
--插入数据
insert into whilestu2
(stuName, age)
values
('学员' || cast(maxstuid as varchar2(50)), age);
commit;
num1 := num1 + 1;
END LOOP;
end;
/
3:使用GUID生成主键的方式
select sys_guid() from dual;
DECLARE
num1 number;
--maxstuid number;
age number;
stuid raw(16);
begin
num1 := 1;
WHILE num1 <= 100 LOOP
age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);
select sys_guid() into stuid from dual;
--插入数据
insert into whilestu3
(stuid, stuName, age)
values
(stuid, '学员' || cast(num1 as varchar2(50)), age);
commit;
num1 := num1 + 1;
END LOOP;
end;
/
展开全部
1、写个存储过程,用游标,循环读数据,执行insert语句。
2、不用游标,直接insert datatable (userid,adddate) select userid,getdate() from usertable
不明白你这么干是为什么,呵呵。
2、不用游标,直接insert datatable (userid,adddate) select userid,getdate() from usertable
不明白你这么干是为什么,呵呵。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
insert into 数据表(userid, adddate) select userid, getdate() from 用户表
SQL代理->作业->新建作业
添加作业步骤,脚本类型:T-SQL命令, 填写上面的语句
添加执行计划,每天凌晨XX点执行。
SQL代理->作业->新建作业
添加作业步骤,脚本类型:T-SQL命令, 填写上面的语句
添加执行计划,每天凌晨XX点执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题叙述不清楚:
1、SQL Server 2000数据库,还是Access数据库?
2、数据库名,例如:ABC.mdb
3、数据库包含数据表,每个数据表中有多个字段,数据表名和字段名?
4、历遍用户表是指全部数据表?
5、每个用户是否是一个特定存储用户资料的?那么插入记录插入到那里?
1、SQL Server 2000数据库,还是Access数据库?
2、数据库名,例如:ABC.mdb
3、数据库包含数据表,每个数据表中有多个字段,数据表名和字段名?
4、历遍用户表是指全部数据表?
5、每个用户是否是一个特定存储用户资料的?那么插入记录插入到那里?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
insert into 数据表(userid,adddate) values((select userid from
用户表),date);
用户表),date);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询