Jump to content
php.lv forumi

Oracle


Mikijs

Recommended Posts

Jautajums ir sekojosh.. isti neizprotu ka orclee darboties ar datubazem..

 

guuglee mekleju bet neatradu sapratigu risinajumu.. vieni sakaa tiesi ta pat kas ar mysql vieni saka ka kaa pgsql

 

:/

 

vai shadi butu pareizi?

 

create sequence tblSpamList_seq start 1;
CREATE TABLE tblSpamList (
 item_id int4 default nextval('tblSpamList_seq') unique NOT NULL,
 user_id int4 not null,
 email character varying(50),
 spam_date date,
 PRIMARY KEY (item_id)
);

Link to comment
Share on other sites

Jautājums numur 1 ko vajag izdarīt?

Jautājums numur 2 kāpēc Oracle un ar kādu mērķi Oracle?

 

bet nu vispār tas ir tā - sekvences izveidošana (defaultā jau sākas no 1 tā kā to var nerakstīt)

SQL> create sequence tblSpamList_seq;

Sequence created.

Tabulas izveide lietojot tipus ko Oracle atzīst (integer jau nu anyway parveidos uz number). Sekvence arī nevar būt kādas kolonas noklusētā vērtība.

SQL> ed
Wrote file afiedt.buf

 1  CREATE TABLE tblSpamList (
 2  item_id integer NOT NULL,
 3  user_id integer not null,
 4  email varchar2(50),
 5  spam_date date,
 6  PRIMARY KEY (item_id)
 7* )
SQL> /

Table created.

Tad rakstot iekšā jaunas rindas vai nu raksta šādi, expliciti rakstot sekvence.nextval:

SQL> insert into tblSpamList values (tblSpamList_seq.nextval, 1, '[email protected]', sysdate);

1 row created.

Vai arī var piemēram izveidot before insert trigeri katrai rindai un pieškirt sekvences vērtību tur, ja tā netiek piešķirta pa tiešo:

11g Oraclē var rakstīt :new.item_id := tblSpamList_seq.nextval; iepriekšējās versijās gan tas nav atļauts, tur jādara kā redzams zemāk:

SQL> ed
Wrote file afiedt.buf

 1  create or replace trigger trg_bef_spamlist before insert on tblSpamList
 2  for each row
 3  begin
 4	if :new.item_id is null then
 5	  select tblSpamList_seq.nextval into :new.item_id from dual;
 6	end if;
 7* end;
SQL> /

Trigger created.

Tad inserts un gala rezultāts būs piemēram šāds:

SQL> insert into tblSpamList (USER_ID) values (2);

1 row created.

SQL> select * from tblSpamList;

	ITEM_ID		 USER_ID EMAIL											  SPAM_DATE
--------------- --------------- -------------------------------------------------- ----------
		  1			   1 [email protected]									   2008.03.17
		  2			   2

 

Gints Plivna

http://datubazes.wordpress.com

Edited by Gints Plivna
Link to comment
Share on other sites

×
×
  • Create New...