Thanks. I modified your code to represent better what is going on (tables are only in memory) to represent what is going on more closely and expected it to fail, but it actually works. Still haven't figured out what makes my other code fail, but will update this thread if I find out.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// creating a unique ID
dt2 = dt << subset( all rows, all columns );
dt2 << New Column( "_Row", <<Set Each Value( Row() ) );
// subsetting just so I have something to link
dt_sub = dt2 << Subset( Selected Rows( 0 ), Rows( [1, 2, 3, 4, 5] ), all rows );
Column( dt2, "_Row" ) << Set Property( "Link ID", 1 );
Column( dt_sub, "_Row" ) << Set Property(
"Link Reference",
{Reference Table( dt2 ),
Options( Row States Synchronization with Referenced Table( Accept( 1 ), Row States( Select, Exclude, Hide, Marker ) ) )}
);