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;
/
温馨提示:答案为网友推荐,仅供参考