DATA Step, Macro, Functions and more

Defining a foreign key on a table in PROC SQL that is also the primary key

Reply
Frequent Contributor
Posts: 99

Defining a foreign key on a table in PROC SQL that is also the primary key

[ Edited ]

I can't seem to get this to work.

 

Neither using just PROC SQL:

 

proc sql;
	create table foo (
		id char(10) primary key
	);

	create table bar (
		id char(10) primary key,
		constraint foo_bar_fkey foreign key(id) references foo on delete restrict on update restrict
	);

quit;

Or with PROC SQL and PROC DATASETS using the overlapping foreign and primary key section as a guide:

 

http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000403555.htm#a0025...

 

proc sql;
	create table foo (
		id char(10)
	);

	create table bar (
		id char(10)
	);
quit;

proc datasets lib=work;
	modify foo;
		ic create primary key(id);
	modify bar;
		ic create foreign key(id) references foo on delete restrict on update restrict;
	modify bar;
		ic create primary key(id);
run;

Getting the same error message when trying to create the primary key for bar:

 

ERROR: An index named id with the same definition but different characteristics exists for file WORK.BAR.DATA.

 

Respected Advisor
Posts: 4,736

Re: Defining a foreign key on a table in PROC SQL that is also the primary key

Posted in reply to tomcmacdonald

@tomcmacdonald

SAS throws this error because you're trying to define ID in table BAR as both a Primary and Foreign key which is not possible.

Ask a Question
Discussion stats
  • 1 reply
  • 81 views
  • 2 likes
  • 2 in conversation