


Why Does My SQL Server Foreign Key Constraint Fail with a 'Number of Referencing Columns' Error?
Resolving Foreign Key Creation Issues in SQL Server
In SQL Server, foreign key declarations differ from those in PostgreSQL. Let's examine a scenario where a query resulted in the error: "Number of referencing columns in foreign key differs from number of referenced columns, table 'question_bank'."
Cause of the Error:
The SQL code provided attempted to create the following tables:
CREATE TABLE question_bank ( question_id UNIQUEIDENTIFIER PRIMARY KEY, question_exam_id UNIQUEIDENTIFIER NOT NULL, question_text VARCHAR(1024) NOT NULL, question_point_value DECIMAL, CONSTRAINT question_exam_id FOREIGN KEY REFERENCES exams(exam_id) );
The error occurred because the foreign key constraint "question_exam_id" in the "question_bank" table references the "exam_id" column in the "exams" table. However, only one referencing column ("question_exam_id") is present in the "question_bank" table, while the "exams" table has multiple columns.
Solution:
To resolve this issue, we need to ensure that the number of referencing columns matches the number of referenced columns. In this case, we only need to add the "exam_name" column from the "exams" table to the "question_bank" table:
ALTER TABLE question_bank ADD COLUMN exam_name VARCHAR(50);
Now, the foreign key constraint can be created successfully:
ALTER TABLE question_bank ADD CONSTRAINT question_exam_id FOREIGN KEY (question_exam_id, exam_name) REFERENCES exams(exam_id, exam_name);
Alternative Syntax:
Alternatively, you can create the constraint during the table creation process:
CREATE TABLE question_bank ( question_id UNIQUEIDENTIFIER PRIMARY KEY, question_exam_id UNIQUEIDENTIFIER NOT NULL, exam_name VARCHAR(50), question_text VARCHAR(1024) NOT NULL, question_point_value DECIMAL, CONSTRAINT question_exam_id FOREIGN KEY (question_exam_id, exam_name) REFERENCES exams(exam_id, exam_name) );
In this case, the "exam_name" column is added to the "question_bank" table and the foreign key constraint is created simultaneously during table creation.
The above is the detailed content of Why Does My SQL Server Foreign Key Constraint Fail with a 'Number of Referencing Columns' Error?. For more information, please follow other related articles on the PHP Chinese website!

MySQLviewshavelimitations:1)Theydon'tsupportallSQLoperations,restrictingdatamanipulationthroughviewswithjoinsorsubqueries.2)Theycanimpactperformance,especiallywithcomplexqueriesorlargedatasets.3)Viewsdon'tstoredata,potentiallyleadingtooutdatedinforma

ProperusermanagementinMySQLiscrucialforenhancingsecurityandensuringefficientdatabaseoperation.1)UseCREATEUSERtoaddusers,specifyingconnectionsourcewith@'localhost'or@'%'.2)GrantspecificprivilegeswithGRANT,usingleastprivilegeprincipletominimizerisks.3)

MySQLdoesn'timposeahardlimitontriggers,butpracticalfactorsdeterminetheireffectiveuse:1)Serverconfigurationimpactstriggermanagement;2)Complextriggersincreasesystemload;3)Largertablesslowtriggerperformance;4)Highconcurrencycancausetriggercontention;5)M

Yes,it'ssafetostoreBLOBdatainMySQL,butconsiderthesefactors:1)StorageSpace:BLOBscanconsumesignificantspace,potentiallyincreasingcostsandslowingperformance.2)Performance:LargerrowsizesduetoBLOBsmayslowdownqueries.3)BackupandRecovery:Theseprocessescanbe

Adding MySQL users through the PHP web interface can use MySQLi extensions. The steps are as follows: 1. Connect to the MySQL database and use the MySQLi extension. 2. Create a user, use the CREATEUSER statement, and use the PASSWORD() function to encrypt the password. 3. Prevent SQL injection and use the mysqli_real_escape_string() function to process user input. 4. Assign permissions to new users and use the GRANT statement.

MySQL'sBLOBissuitableforstoringbinarydatawithinarelationaldatabase,whileNoSQLoptionslikeMongoDB,Redis,andCassandraofferflexible,scalablesolutionsforunstructureddata.BLOBissimplerbutcanslowdownperformancewithlargedata;NoSQLprovidesbetterscalabilityand

ToaddauserinMySQL,use:CREATEUSER'username'@'host'IDENTIFIEDBY'password';Here'showtodoitsecurely:1)Choosethehostcarefullytocontrolaccess.2)SetresourcelimitswithoptionslikeMAX_QUERIES_PER_HOUR.3)Usestrong,uniquepasswords.4)EnforceSSL/TLSconnectionswith

ToavoidcommonmistakeswithstringdatatypesinMySQL,understandstringtypenuances,choosetherighttype,andmanageencodingandcollationsettingseffectively.1)UseCHARforfixed-lengthstrings,VARCHARforvariable-length,andTEXT/BLOBforlargerdata.2)Setcorrectcharacters


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1
Easy-to-use and free code editor

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function
