| re: Set maximum number of rows on a table?
Another idea.
CREATE TABLE LimitRows
(PK INTEGER NOT NULL
,Data1 VARCHAR(5) NOT NULL
)
ORGANIZE BY KEY SEQUENCE (PK STARTING 1 ENDING 10)
DISALLOW OVERFLOW
;
INSERT INTO LimitRows
SELECT PK, 'AAA'
FROM (VALUES 2,3,5,8,9) S(PK)
;
Insert one row.
INSERT INTO LimitRows
SELECT COALESCE(MIN(COALESCE(A.PK, N.PK)), 10) + 1, 'BBB'
FROM LimitRows A
FULL OUTER JOIN
(SELECT NULLIF(COUNT(*),1)
FROM LimitRows
WHERE PK = 1
) N (PK)
ON N.PK = A.PK
WHERE NOT EXISTS
(SELECT *
FROM LimitRows B
WHERE B.PK = A.PK + 1
)
AND COALESCE(A.PK, N.PK) < 10
;
Repeat 4 times by changing Data1 to 'CCC','DDD','EEE','FFF'.
(Filled all 10 rows)
Next Insert gets error message:
SQL1870N A row could not be inserted into a range-clustered table
because a key sequence column is out of range.
Final result is....
----------------------- Commands Entered -----------------------
SELECT * FROM LimitRows;
----------------------------------------------------------------
PK DATA1
----------- -----
1 BBB
2 AAA
3 AAA
4 CCC
5 AAA
6 DDD
7 EEE
8 AAA
9 AAA
10 FFF
10 record(s) selected. |