In this article we will be seeing how to restrict deletions on Lookup field in
SharePoint 2010 using C# and power shell.
When you create a lookup column in SharePoint 2010 you can see "Relationship"
where you can maintain referential integrity enforcing the relationships defined
by lookup columns. Just like foreign key constraints in a relational database,
in SharePoint 2010 you can configure restrict delete and cascade delete rules on
lookup column relationships:
- Cascade delete rules: Delete items that
reference a record when you delete that record.
- Restrict delete rules: Will prevent you
from deleting a record that is referenced by a lookup column in another
list.
Using C#:
- Open Visual Studio 2010.
- Create Console Application.
- Replace the code with the following.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
Microsoft.SharePoint;
namespace
RestrictDeletions
{
class Program
{
static void
Main(string[] args)
{
using (SPSite
site = new SPSite("http://serverName:1111/SitePages/Home.aspx"))
{
using (SPWeb
web = site.RootWeb)
{
SPList list =
web.Lists.TryGetList("ChildList");
SPField field=list.Fields["Department"];
SPFieldLookup fieldLookup
= (SPFieldLookup)field;
fieldLookup.Indexed = true;
fieldLookup.RelationshipDeleteBehavior =
SPRelationshipDeleteBehavior.Cascade;
fieldLookup.Update();
}
}
}
}
}
Using PowerShell:
$siteURL="http://serverName:1111/"
$site=Get-SPSite $siteURL
$web=$site.Rootweb
$list=$web.Lists.TryGetList("ChildList")
$field=$list.Fields["Department"]
$fieldLookup=[Microsoft.SharePoint.SPFieldLookup]$field
$fieldLookup.Indexed=$true
$fieldLookup.RelationshipDeleteBehavior=[Microsoft.SharePoint.SPRelationshipDeleteBehavior]::Cascade
$fieldLookup.Update()