[英]Set primary key with two integers
我有一個帶有主鍵(ColumnA,ColumnB)的表。 我想做一個函數或過程,當傳遞兩個整數時將在表中插入一行,但要確保最大的整數總是進入ColumnA,較小的整數總是進入ColumnB。
因此,如果我們有SetKeysWithTheseNumbers(17,19)將返回
|-----------------|
|ColumnA | ColumnB|
|-----------------|
|19 | 17 |
|-----------------|
SetKeysWithTheseNumbers(19,17)將返回相同的內容
|-----------------|
|ColumnA | ColumnB|
|-----------------|
|19 | 17 |
|-----------------|
這是一個存儲過程
DELIMITER $$
DROP PROCEDURE IF EXISTS `SetKeysWithTheseNumbers` $$
CREATE PROCEDURE `SetKeysWithTheseNumbers` (
n1 integer,
n2 integer
)
BEGIN
declare n3 integer;
declare n4 integer;
if( n1 > n2 ) then
set n3=n1;
set n4=n2;
else
set n3=n2;
set n4=n1;
end if;
insert into mytable values(n3,n4);
END $$
DELIMITER ;
您可以嘗試觸發 :
delimiter //
CREATE TRIGGER greater_ColA_table
BEFORE INSERT ON table
FOR EACH ROW
BEGIN
DECLARE a INTEGER;
IF NEW.ColumnA < NEW.ColumnB THEN
SET a=NEW.ColumnA;
SET NEW.ColumnA=NEW.ColumnB, NEW.ColumnB=a;
END IF;
END //
delimiter ;
對BEFORE UPDATE
事件重復上述步驟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.