Foreign Key constraint issue - sql

What could possibly caused a FK error? I'm inserting an 'Activity' record into a database that has a 'StaffId' field on (FK with Staff table), I've looked for the staffId in question (no white spaces etc.) and it DOES exist. What else can cause an error with a foreign key field?
EDIT: Error:
The INSERT statement conflicted with the FOREIGN KEY constraint
"FK_Activities_Staff". The conflict occurred in database
"DataWarehouseB", table "dbo.Staff", column 'StaffId'. The statement
has been terminated.

SQL Foreign Key documentation says
If the database schema contains foreign key errors that require
looking at more than one table definition to identify, then those
errors are not detected when the tables are created. Instead, such
errors prevent the application from preparing SQL statements that
modify the content of the child or parent tables in ways that use the
foreign keys. Errors reported when content is changed are "DML errors"
and errors reported when the schema is changed are "DDL errors". So,
in other words, misconfigured foreign key constraints that require
looking at both the child and parent are DML errors. The English
language error message for foreign key DML errors is usually "foreign
key mismatch" but can also be "no such table" if the parent table does
not exist. Foreign key DML errors are may be reported if:
The parent table does not exist.
The parent key columns named in the foreign key constraint do not exist.
The parent key columns named in the foreign key constraint are not the primary key of the parent table and are not subject to a
unique constraint using collating sequence specified in the CREATE
TABLE.
The child table references the primary key of the parent without specifying the primary key columns and the number of primary key
columns in the parent do not match the number of child key columns.
Some DBs might also support using a non-unique index as a foreign key reference,

Related

How can I change the constraints of FOREIGN KEY in code first mode?

my error :
Introducing FOREIGN KEY constraint 'FK_Table_ArticleViolations_Table_Users_vUser_ID' on table 'Table_ArticleViolations' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.
I need to use an PK in a few other tables as FK
How can I change the constraints of FOREIGN KEY in code first mode ?
Thank you

SQL Server Database Diagram Connection Error

As you can see in the picture, I have the tables. The mistake I got is as follows: From the airport table, the primary key should go to both fields in the flight table. I get an error when I do this to both the stay airport and the landing airport. How do I solve this?
Error: - Unable to create relationship 'FK_a.ucus_a.havalimanlari1'.
Introducing FOREIGN KEY constraint 'FK_a.ucus_a.havalimanlari1' on table 'a.ucus' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.

Linking Two Foreign Keys to one Primary Key

I have two tables, a Photographer and an Influences table. In the Influences table, a Photographer is able to influence another Photographer.
Relational Schema:
Here is my Diagram in SQL:
Instance Example:
My issue is when I try to delete Photographer Tom, since he influences Jason (as shown in Influences table), I get a error stating:
The DELETE statement conflicted with the REFERENCE constraint "FK_Influences_Photographer1". The conflict occurred in database "jma59", table "dbo.Influences"
If Tom was in the column EPName of the Influences table, I have no issue deleting it. I know that this is a foreign key issue but I am not sure how to handle this situation. I created two separate foreign keys that reference to the Photographer primary key. But the problem is that I cannot make it so that both foreign keys cascade on update and delete.
First foreign key is EPName and EPBDate referencing to PName and PBDate of Photographer
Second foreign key is RPName and RPBDate referning to PName and PBDate of Photographer as well.
The error is:
Unable to create relationship 'FK_Influences_Photographer1'. Introducing FOREIGN KEY constraint 'FK_Influences_Photographer1' on table 'Influences' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Any advice is greatly appreciated!
You could consider using a Trigger rather than a cascading delete to enforce referential integrity: https://support.microsoft.com/en-gb/help/321843/error-message-1785-occurs-when-you-create-a-foreign-key-constraint-tha

Changing column to just a regular column instead of foreign key

I have a specific situation where I have a column type in my DB where the column is currently of type int and it is a foreign key type that allows nulls...
My question is: is it possible to change now this column simply to a int type which isn't a foreign key without messing up the data in both tables, and leaving the values intact?
For example:
alter table xy
alter column ForeignKeyIdColumn int null
Would something like this work?
Can someone help me out?
A foreign key is not a property of the columns of a table, it's a database object that defines the relationship between tables.
You can drop the foreign key constraint (though I wouldn't recommend it) using ALTER TABLE with DROP CONSTRAINT, but you have to know the name of the constraint to do it (this is why it's best practice to name everything in SQL SERVER):
ALTER TABLE xy
DROP CONSTRAINT <constraint name here>;
However, as I wrote, I wouldn't recommend dropping foreign key constraints.
Foreign keys are the database way to enforce referential integrity - meaning that a value referenced by another table can't be changed or deleted without changing or deleting the referencing value as well.
Dropping foreign keys means your database will not be able to enforce referential integrity any more and that might lead to corrupt data.
For more information, read Delete Foreign Key Relationships

I added a foreign key to an existing database and when I tried to publish it this error came up

An error occurred while the batch was being processed
Foreign key should always follow referential integrity constraint. Referential integrity constraint states that whenever adding value to foreign key column in child table, it should have equivalent primary key value in parent table.
Here in your case, as you said, you added a foreign key to an existing database table, so it may be possible that values in that table are violating referential integrity constraint, which is producing error.